rt,应该不是狭义上的厌氧,我的意思是程序吸氧之后运行效率没有任何改变,自己写了快读快写才通过了。但是不是说 CSP-J 不卡常吗?
#include<iostream>
#include<algorithm>
#include<ctype.h>
#include<stdio.h>
using namespace std;
const int INT_MAX=0x7fffffff;
struct var
{
int val;
int ind;
var(){}
};
bool cmp(var a,var b)
{
if(a.val==b.val)
return a.ind<b.ind;
return a.val<b.val;
}
bool cmp2(var a,var b)
{
if(a.val==b.val)
return a.ind>b.ind;
return a.val>b.val;
}
var arr[8005];
int read()
{
int x=0;char ch=' ';
while(!isdigit(ch))
ch=getchar();
while(isdigit(ch))
{
x=x*10+ch-48;
ch=getchar();
}
return x;
}
void write(int x)
{
if(x>9)write(x/10);
putchar(x%10+48);
}
int main()
{
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
int n,m;cin>>n>>m;
for(int i=1;i<=n;++i)
{
cin>>arr[i[.val;
arr[i].ind=i;
}
sort(arr+1,arr+n+1,cmp);
arr[n+1].val=INT_MAX;
while(m--)
{
int op,x,y;cin>>op>>x;
if(op==1)
{
cin>>y;int i;
for(i=1;i<=n;++i)
if(arr[i].ind==x)
{arr[i].val=y;break;}
if(cmp(arr[i],arr[i-1]))
{
while(cmp(arr[i],arr[i-1]))
{swap(arr[i],arr[i-1]);--i;}
}
else if(cmp2(arr[i],arr[i+1]))
{
while(cmp2(arr[i],arr[i+1]))
{swap(arr[i],arr[i+1]);++i;}
}
}
else
{
for(int i=1;i<=n;++i)
if(arr[i].ind==x)
cout<<i<<endl;
}
}
//fclose(stdin);fclose(stdout);
return 0;
}