#include<bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
int arr[100005];
struct node{
	int z;
	int cnt;
}brr[100005];
int n,q;
bool cmp(node a,node b){
	if(a.z<b.z) return 1;
	else if(a.z>b.z) return 0;
	else return a.cnt<b.cnt;
}
int main(){
	freopen("sort.in","r",stdin);
	freopen("sort.out","w",stdout);
	cin>>n>>q;
	for(int i=1;i<=n;i++){
		cin>>brr[i].z;
		brr[i].cnt=i;
	}
	sort(brr+1,brr+1+n,cmp);
	for(int i=1;i<=n;i++) arr[brr[i].cnt]=i;
	while(q--){
		int c,x,y;
		cin>>c;
		if(c==1){
			cin>>x>>y;
			brr[arr[x]].z=y;
			for(int i=n;i>=2;i--){
				if(cmp(brr[i],brr[i-1])){
					node t=brr[i];
					brr[i]=brr[i-1];
					brr[i-1]=t;
				}
			}
			for(int i=2;i<=n;i++){
				if(cmp(brr[i],brr[i-1])){
					node t=brr[i];
					brr[i]=brr[i-1];
					brr[i-1]=t;
				}
			}
			for(int i=1;i<=n;i++){
				arr[brr[i].cnt]=i;
			}
		}else{
			cin>>x;
			cout<<arr[x]<<endl;
		}
	}
	return 0;
}

0 条评论

目前还没有评论...