Привет. Хочу поделиться простым методом сжатия координат. Справится даже начинающий.
vector<int> a(n);
// считываем вектор
vector<int> b = a;
sort(b.begin(), b.end());
map<int, int> m;
for (int i = 0; i < n; i++) {
m[a[i]] = i;
}
for (int i = 0; i < n; i++) {
a[i] = m[a[i]];
}
Теперь все значения массива лежат в [0, n)
. Самое удобное, что если вам нужно оригинальное значение a[i]
, можно просто написать b[a[i]]
.
А как это пишите вы?