Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33871 | alex_liu | [CSP-J2021]插入排序 | C++ | 运行超时 | 76 | 1000 MS | 1148 KB | 1156 | 2021-12-08 13:57:59 |
#include<bits/stdc++.h> using namespace std; int ans[300001],cnt,n,q; struct mumbers{ int y,z; }a[30001],b[30001]; bool cmp(mumbers a,mumbers b){ if(a.z!=b.z) return a.z<b.z; return a.y<b.y; } int main(){ cin>>n>>q; int x; for(int i=1;i<=n;i++){ cin>>x; a[i].z=b[i].z=x; b[i].y=i; } sort(b+1,b+n+1,cmp); for(int i=1;i<=n;i++)a[b[i].y].y=i; int opt,y,t; for(int i=1;i<=q;i++){ cin>>opt; if(opt==2){ cin>>x; ans[++cnt]=a[x].y; continue; } cin>>x>>y; t=a[x].z; for(int j=1;j<=n;j++) if(j<x){ if(a[j].z<=t&&a[j].z>y) a[j].y++,a[x].y--; if(a[j].z>t&&a[j].z<=y) a[j].y--,a[x].y++; } else if(j>x){ if(a[j].z<t&&a[j].z>=y) a[j].y++,a[x].y--; if(a[j].z>=t&&a[j].z<y) a[j].y--,a[x].y++; } a[x].z=y; } for(int i=1;i<=cnt;i++)cout<<ans[i]<<endl; return 0; }