洛谷P7910
P7910 [CSP-J 2021] 插入排序
很诡异你知道吗?
这题纯纯缝合怪
点击查看代码
#include <bits/stdc++.h>
using namespace std;
pair<int, int> b[8005];
int t[8005], n, q, a[8005];
void qsort() {
for (int i = 1; i <= n; ++i)
b[i] = {a[i], i};
sort(b + 1, b + n + 1);
for (int i = 1; i <= n; ++i) t[b[i].second] = i;
}
void upd(int x, int v) {
b[t[x]].first = v;
for (int i = 1; i <= n + 1; ++i) {
if (b[t[x]] < b[i]) {
if (i < t[x]) {
for (int j = t[x]; j > i; --j) {
b[j] = b[j - 1];
}
b[i] = {v, x};
} else {
for (int j = t[x]; j < i - 1; ++j) {
b[j] = b[j + 1];
}
b[i - 1] = {v, x};
}
break;
}
}
for (int i = 1; i <= n; ++i) t[b[i].second] = i;
}
int main() {
cin >> n >> q;
for (int i = 1; i <= n; ++i) cin >> a[i];
qsort();
b[n + 1] = {0x3f3f3f3f, n + 1};
while (q--) {
int op, x, v;
cin >> op;
if (op == 1) {
cin >> x >> v;
a[x] = v;
upd(x, v);
} else {
cin >> x;
cout << t[x] << endl;
}
}
return 0;
}

浙公网安备 33010602011771号