68分求助,玄关
查看原帖
68分求助,玄关
705296
miffy_123楼主2023/12/17 13:08
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 2147483646
#define inf 9223372036854775806
#define rep(i,o,p) for(int (i)=(o);(i)<=(p);(i)++)
#define all(c) (c).begin(),(c).end()
#define per(i,o,p) for(int (i)=(o);(i)>=(p);(i)--)
#define pl putchar('\n');
int read(){
	int f=1,k=0;
	char c;
	c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-'){
			f=-1;
		}
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		k=(k<<1)+(k<<3)+(c^48);
		c=getchar();
	}
	return f*k;
}
void write(int x){
	if(x<0){
		putchar('-');
		x=-x;
	}
	if(x>9){
		write(x/10);
	}
	putchar(x%10+'0');
}
struct axid{
	int val,id;
};
bool cmp(axid &A,axid &B){
	if(A.val!=B.val)
		return A.val<B.val;
	return A.id<B.id;
}
axid a[8005];
int t[8005]; 
int n,q;
int main(){
	n=read();
	q=read();
	for(int i=1;i<=n;i++){
		a[i].val=read();
		a[i].id=i;
	}
	sort(a+1,a+n+1,cmp);
	for(int j=1;j<=n;j++){
		t[a[j].id]=j;
	}
	for(int i=0;i<q;i++){
		int k,x,v;
		k=read();
		if(k==1){
			x=read();
			v=read();
			a[t[x]].val=v;
			for(int j=n-1;j>1;j--){
				if(cmp(a[j],a[j-1])){
					swap(a[j-1],a[j]);
				}
			}
			for(int j=2;j<=n;j++){
				if(cmp(a[j],a[j-1])){
					swap(a[j-1],a[j]);
				}
			}
			for(int j=1;j<=n;j++){
				t[a[j].id]=j;
			}
		}
		else{
			x=read();
			write(t[x]);
			pl
		}
	}
    return 0;
}
2023/12/17 13:08
加载中...