1 条题解

  • 0
    @ 2025-10-8 16:59:35

    76分代码:

    #include<bits/stdc++.h>
    using namespace std;
    int a[11100];
    int main()
    {
    int n,Q,c,p,x,ans;scanf("%d%d",&n,&Q);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    while(Q--)
    {
    scanf("%d",&c);
    if(c==1)
    {
    scanf("%d%d",&p,&x);a[p]=x;
    }
    else
    {
    scanf("%d",&p);
    ans=0;
    for(int i=1;i<p;i++)if(a[i]<=a[p])ans++;
    for(int i=p+1;i<=n;i++) if(a[i]<a[p])ans++;
    printf("%d\n",ans+1);
    }
    }

    return 0;
    

    }</pre>


    100分代码:
    #include<bits/stdc++.h>
    using namespace std;
    struct node{int x,p;}a[11100];
    bool cmp(node n1,node n2){ if(n1.x!=n2.x) return n1.x<n2.x;else return n1.p<n2.p;}
    int newip[11100];
    int main()
    {
        int n,Q,c,p,x,ans;scanf("%d%d",&n,&Q);
        for(int i=1;i<=n;i++)scanf("%d",&a[i].x),a[i].p=i;
        sort(a+1,a+n+1,cmp);
        for(int i=1;i<=n;i++) newip[ a[i].p ]=i;
        while(Q--)
        {
            scanf("%d",&c);
            if(c==1)
            {
                scanf("%d%d",&p,&x);a[newip[p]].x=x;
                for(int i=newip[p];i>1;i--)if(cmp(a[i],a[i-1]))
                {
                	swap(newip[a[i].p],newip[a[i-1].p]);
                	swap(a[i],a[i-1]);
                }
                for(int i=newip[p];i<n;i++)if(!cmp(a[i],a[i+1]))
                {
                	swap(newip[a[i].p],newip[a[i+1].p]);
                	swap(a[i],a[i+1]);
                }
            }
            else
            {
                scanf("%d",&p);
                printf("%d\n",newip[p]);
            }
        }
    
    return 0;
    

    }

    </p>
    • 1

    信息

    ID
    2017
    时间
    1000ms
    内存
    512MiB
    难度
    6
    标签
    递交数
    49
    已通过
    14
    上传者