社区讨论
36pts 求条玄关
P7910[CSP-J 2021] 插入排序参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhj0s82j
- 此快照首次捕获于
- 2025/11/03 18:51 4 个月前
- 此快照最后确认于
- 2025/11/03 18:51 4 个月前
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,Q;
struct zzs{
int id;
int va;
}a[8005];
bool cmp(zzs a,zzs b){
if(a.va!=b.va) return a.va<b.va;
else return a.id<b.id;
}
int b[8005];
signed main() {
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>Q;
for(int i=1;i<=n;i++){
cin>>a[i].va;
a[i].id=i;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
b[a[i].id]=i;
}
while(Q--){
int op;
cin>>op;
if(op==1){
int x,v;
cin>>x>>v;
if(a[b[x]].va<v){
a[b[x]].va=v;
for(int i=b[x];i<n;i++){
if(a[i].va>a[i+1].va||(a[i].va==a[i+1].va&&a[i].id>a[i+1].id)){
swap(a[i],a[i+1]);
}
else{
break;
}
}
}
else{
a[b[x]].va=v;
for(int i=b[x];i>1;i--){
if(a[i].va<a[i-1].va||(a[i].va==a[i-1].va&&a[i].id>a[i-1].id)){
swap(a[i],a[i-1]);
}
else{
break;
}
}
}
for(int i=1;i<=n;i++){
b[a[i].id]=i;
}
}
else{
int x;
cin>>x;
cout<<b[x]<<"\n";
}
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...