1 条题解
-
0
#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
- 上传者