二维坐标的离散化

int n;
int x[M], y[M];
vector<int>vx, vy;

void init() {
    sort(vx.begin(), vx.end());
    sort(vy.begin(), vy.end());
    vx.erase(unique(vx.begin(), vx.end()), vx.end());
    vy.erase(unique(vy.begin(), vy.end()), vy.end());
    for (int i = 1; i <= n; i++) {
        x[i] = lower_bound(vx.begin(), vx.end(), x[i]) - vx.begin();
        y[i] = lower_bound(vy.begin(), vy.end(), y[i]) - vy.begin();
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> x[i] >> y[i];
        vx.push_back(x[i]);
        vy.push_back(y[i]);
    }
    init();
    
    return 0;
}
原文地址:https://www.cnblogs.com/caibingxu/p/11350621.html