#include<bits/stdc++.h>
using namespace std;
int n,m,a[8005],op,x,v;
struct node{
int id,x;
bool operator<(const node p){
if(x!=p.x)
return x<p.x;
else
return id<p.id;
}
}b[8005];
int main(){
//freopen("sort.in","r",stdin);
//freopen("sort.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",a+i);
}
for(int i=1;i<=m;i++){
scanf("%d%d",&op,&x);
if(op==1){
scanf("%d",&v);
a[x]=v;
}else{
for(int i=1;i<=n;i++){
b[i].x=a[i],b[i].id=i;
}
sort(b+1,b+n+1);
for(int i=1;i<=n;i++)
if(b[i].id==x){
printf("%d\n",i);
break;
}
}
}
return 0;
}
T2
#include<bits/stdc++.h>
using namespace std;
int n,a[200005],cnt;
struct node{
int id,x;
}b[200005];
bool vis[200005];
int main(){
//freopen("fruit.in","r",stdin);
//freopen("fruit.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",a+i);
while(cnt<n){
int sum=0,pos;
for(int i=1;i<=n;i++)
if(!vis[i])
b[++sum].x=a[i],b[sum].id=i;
pos=b[1].id;
for(int i=1;i<=sum;i++){
if(b[i].x!=b[i+1].x||i==sum){
vis[pos]=true;
cnt++;
printf("%d ",pos);
pos=b[i+1].id;
}
}
printf("\n");
}
return 0;
}
T4
T2洛谷72,计蒜客52,T4洛谷70,计蒜客90