洛谷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;
}

posted @ 2025-05-13 16:34  Chuan81  阅读(60)  评论(0)    收藏  举报