52分,但思路貌似正确
查看原帖
52分,但思路貌似正确
1159387
jung_le楼主2024/10/19 11:20
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct ax{
	int inde;
	ll value;
};
ll n,q,t1,t2,t3;
ax a[8003];
map<ll,int> trans;
bool cmp(ax a,ax b){
	return a.value < b.value || (a.value == b.value && a.inde < b.inde);
}
int main(){
//  freopen("sort.in","r",stdin);
//  freopen("sort.out","w",stdout);
	scanf("%lld%lld",&n,&q);
	for(int i=1;i<=n;i++){
//		cin>>a[i].value;
		scanf("%lld",&a[i].value);
		a[i].inde=i;
	}
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++){
		trans[a[i].inde] = i;
	}
	for(int _=0;_<q;_++){
		scanf("%lld",&t1);
		if(t1==1){
			scanf("%lld%lld",&t2,&t3);
			a[trans[t2]].value = t3;
			for(int j=1;j<n;j++){
				if(cmp(a[j+1],a[j])){
					swap(a[j],a[j+1]);
				}
			}
			for(int j=n-1;j>=1;j--){
				if(cmp(a[j+1],a[j])){
					swap(a[j],a[j+1]);
				}
			}
			for(int i=1;i<=n;i++){
				trans[a[i].inde] = i;
			}
		}
		else{
			scanf("%lld",&t2);
			printf("%d\n",trans[t2]);
//			cout<<trans[t2]<<endl;
		}
	}
	return 0;

}//O(n+n*n+n+15000*n+(q-5000)) 

我也不是 O(n2q)O(n^2q)

2024/10/19 11:20
加载中...