求调,8分
查看原帖
求调,8分
1020845
yaozhuocheng楼主2024/9/29 22:13
#include<bits/stdc++.h>
using namespace std;
#define int long long 
int n,q,a[10000],x,y,z,f[10000];
struct node {
	int id,sum;
}b[11000];
bool cmp(node x,node y){
	if (x.sum!=y.sum){
		return x.sum<y.sum;
	}
		else return x.id<y.id;
}
signed main(){
	std::cin.tie(0);std::cout.tie(0);
	cin>>n>>q;
	for (int i=1;i<=n;i++){
		cin>>a[i];
		b[i].sum=a[i];
		b[i].id=i;
	}
	sort(b+1,b+1+n,cmp);
	for (int i=1;i<=n;i++){
		f[b[i].id]=i;
	}
	for (int k=1;k<=q;k++){
		cin>>x;
		if (x==1){
			cin>>y>>z;
			int t=0;
			for (int i=1;i<=n;i++){
				if (b[i].sum==a[y]&&b[i].id==y){
					b[i].sum=z;
					t=i;
					break;
				} 
			}
			while ((b[t].sum<b[t-1].sum||b[t].sum==b[t-1].sum&&b[t].id<b[t-1].id)&&t>1){
				swap(b[t],b[t-1]);
//					swap(c[t],c[t-1]);
				t--;
			}
			while ((b[t].sum>b[t+1].sum||b[t].sum==b[t+1].sum&&b[t].id>b[t+1].id)&&t<n){
				swap(b[t],b[t+1]);
//						swap(c[t],c[t+1]);
				t++;
			}
			for (int i=1;i<=n;i++){
				f[b[i].id]=i;
			}
		}
			else {
				cin>>y;
				cout<<f[y]<<endl;
			}
	}
} 
2024/9/29 22:13
加载中...