爆零求助
#include<bits/stdc++.h>
using namespace std;
int n,q;
long long a[8001][2],x,y,z,f[8001][2],b[8001];
int main()
{
cin >> n >> q;
for(int i = 1;i <= n;i++)
{
cin >> f[i][0];
f[i][1] = i;
}
for(int i = 1;i <= n;i++)
{
for(int j = i;j >= 2;j--)
{
if(f[j][0] < f[j-1][0] )
{
long long t = f[j-1][0],y = f[j-1][1];
f[j-1][0] = f[j][0];
f[j-1][1] = f[j][1];
f[j][0] = t;
f[j][1] = y;
}
}
}
for(int i = 1;i <= n;i++)b[f[i][1]] = i;
for(int z = 1;z <= q;z++)
{
cin >> x;
if(x ==2)
{
cin >> y;
cout << b[y] << endl;
}
else if(x == 1)
{
cin >> y >> z;
for(int i = 1;i <= n;i++)
{
if(f[i][1] == y)
{
f[i][0] = z;
break;
}
}
for(int j = n;j >= 2;j--)
{
if(f[j][0] < f[j-1][0] || (f[j][0] == f[j-1][0] && f[j][1] < f[j-1][1]))
{
long long t = f[j-1][0],y = f[j-1][1];
f[j-1][0] = f[j][0];
f[j-1][1] = f[j][1];
f[j][0] = t;
f[j][1] = y;
}
}
for(int j = 1;j <= n-1;j++)
{
if(f[j][0] > f[j+1][0]||(f[j][0] == f[j+1][0] && f[j][1] > f[j+1][1]))
{
long long t = f[j+1][0],y = f[j+1][1];
f[j+1][0] = f[j][0];
f[j+1][1] = f[j][1];
f[j][0] = t;
f[j][1] = y;
}
}
for(int i = 1;i <= n;i++)
{
b[f[i][1]] = i;
}
}
}
return 0;
}