这程序怎么厌氧啊。。。
查看原帖
这程序怎么厌氧啊。。。
517637
瀛洲仙子楼主2023/10/16 20:55

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;
}

2023/10/16 20:55
加载中...