1 条题解
-
0
76分代码:
#include<bits/stdc++.h> using namespace std; int a[11100]; int main() { int n,Q,c,p,x,ans;scanf("%d%d",&n,&Q); for(int i=1;i<=n;i++)scanf("%d",&a[i]); while(Q--) { scanf("%d",&c); if(c==1) { scanf("%d%d",&p,&x);a[p]=x; } else { scanf("%d",&p); ans=0; for(int i=1;i<p;i++)if(a[i]<=a[p])ans++; for(int i=p+1;i<=n;i++) if(a[i]<a[p])ans++; printf("%d\n",ans+1); } }return 0;}</pre>
100分代码:#include<bits/stdc++.h> using namespace std; struct node{int x,p;}a[11100]; bool cmp(node n1,node n2){ if(n1.x!=n2.x) return n1.x<n2.x;else return n1.p<n2.p;} int newip[11100]; int main() { int n,Q,c,p,x,ans;scanf("%d%d",&n,&Q); for(int i=1;i<=n;i++)scanf("%d",&a[i].x),a[i].p=i; sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++) newip[ a[i].p ]=i; while(Q--) { scanf("%d",&c); if(c==1) { scanf("%d%d",&p,&x);a[newip[p]].x=x; for(int i=newip[p];i>1;i--)if(cmp(a[i],a[i-1])) { swap(newip[a[i].p],newip[a[i-1].p]); swap(a[i],a[i-1]); } for(int i=newip[p];i<n;i++)if(!cmp(a[i],a[i+1])) { swap(newip[a[i].p],newip[a[i+1].p]); swap(a[i],a[i+1]); } } else { scanf("%d",&p); printf("%d\n",newip[p]); } }</p>return 0;}
- 1
信息
- ID
- 2017
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 6
- 标签
- 递交数
- 49
- 已通过
- 14
- 上传者