1 条题解

  • 0
    @ 2026-2-7 9:04:27

    #include<bits/stdc++.h> using namespace std; struct node{ int num,p; }b[8005]; bool cmp(node x,node y){ if(x.numy.num)return x.p<y.p; return x.num<y.num; } int t[8005],n,q,a[8005]; void qsort(){ for(int i=1;i<=n;++i){ b[i].num=a[i],b[i].p=i; } sort(b+1,b+n+1,cmp); for(int i=1;i<=n;++i)t[b[i].p]=i; } void upd(int x,int y){ b[t[x]].num=y; for(int i=1;i<=n+1;++i){ if(b[t[x]].num<b[i].num || (b[t[x]].num == b[i].num && b[t[x]].p<b[i].p)){ if(i<t[x]){ for(int j=t[x];j>i;--j){ b[j] = b[j-1]; } b[i].num=y,b[i].p=x; } else{ for(int j=t[x]; j<i-1;++j){ b[j] = b[j+1]; } b[i-1].num=y,b[i-1].p=x; } break; } } for(int i=1;i<=n;++i)t[b[i].p]=i; } int main(){ cin>>n>>q; for(int i=1;i<=n;++i){ cin>>a[i]; } qsort(); b[n+1].num=0x3f3f3f3f,b[n+1].p=n+1; while(q--){ int op,x,y; cin>>op; if(op1){ cin>>x>>y; a[x]=y; upd(x,y); } else { cin>>x; cout<<t[x]<<endl; } } return 0; }

    • 1

    信息

    ID
    708
    时间
    4000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    8
    已通过
    3
    上传者