闪击爆零
查看原帖
闪击爆零
1189990
xuanmangguo楼主2024/10/13 10:34
#include<bits/stdc++.h>
using namespace std;
struct node {
    int id;
    int data;
};
node a[8001];
bool cmp(node x,node y) {
    if(x.data!=y.data) return x.data<y.data;
    else return x.id<y.id;
}
int t[8001],x,v,opt,n,q;
int main() {
    cin>>n>>q;
    for(int i=1;i<=n;i++) {
        cin>>a[i].data;
        a[i].id=i;
    }
    sort(a+1,a+1+n,cmp);
    for(int i=1;i<=n;i++) {
        t[a[i].id]=i;
    }
    for(int i=1;i<=q;i++) {
        cin>>opt;
        if(opt==1) {
            cin>>x>>v;
            a[t[x]].data=v;
            for(int j=t[x];j<n;j++) {
                if(cmp(a[j+1],a[j])) {
                    node t=a[j];
                    a[j]=a[j+1];
                    a[j+1]=a[j];
                }
            }
            for(int j=t[x];j>1;j--) {
                if(cmp(a[j],a[j-1])) {
                    node t=a[j];
                    a[j]=a[j-1];
                    a[j-1]=a[j];
                }
            }
            for(int j=1;j<=n;j++) t[a[j].id]=j;
        }
        if(opt==2) {
            cin>>x>>v;
            cout<<t[x]<<' ';
        }
    }
    return 0;
}
2024/10/13 10:34
加载中...