40分求助,1~4,14~16,20~22ac,其他wa
查看原帖
40分求助,1~4,14~16,20~22ac,其他wa
780924
thereisnoname楼主2022/10/2 18:25
#include <iostream>

using namespace std;
struct num
{
    int n;
    int a;
};
int main()
{
    int n,Q,v,x,type,ans[200000]= {0},y=0;
    num a1[8001];
    cin>>n>>Q;
    for(int i=1; i<=n; i++)
    {
        cin>>a1[i].n;//输入
        a1[i].a=i;
    }
    for (int j = 1; j <= n; j++)//排序
    {
        for (int k = j; k >= 2; k--)
        {
            if (a1[k].n < a1[k-1].n)
            {
                num t = a1[k-1];
                a1[k-1] = a1[k];
                a1[k] = t;
            }
        }
    }
    for(int i=1; i<=Q; i++)
    {
        cin>>type;
        if(type==1)//第一种
        {
            cin>>x>>v;
            int j;
            for(int k=1; k<=n; k++)
            {
                if(a1[k].a==x)
                {
                    j=k;
                    a1[k].n=v;//找到原数组编号在现数组的位置
                }
            }
            if(a1[j].n>a1[j+1].n&&j+1<=n)//是否大于后一位
            {
                for(int k=j; k<n; k++)
                {
                    if (a1[k].n > a1[k+1].n)
                    {
                        num t = a1[k+1];
                        a1[k+1] = a1[k];
                        a1[k] = t;
                    }
                }
            }
            else if(a1[j].n==a1[j+1].n&&j+1<=n)//是否等于后一位
            {
                for(int k=j; k<n; k++)
                {
                    if(a1[k].n==a1[k-1].n&&a1[k].a>a1[k+1].a)
                    {
                        num t = a1[k+1];
                        a1[k+1] = a1[k];
                        a1[k] = t;
                    }
                }
            }
            if(a1[j].n<a1[j-1].n&&j-1>=1)//是否小于前一位
            {
                for (int k = j; k >= 2; k--)
                {
                    if (a1[k].n < a1[k-1].n)
                    {
                        num t = a1[k-1];
                        a1[k-1] = a1[k];
                        a1[k] = t;
                    }
                }
            }
            else if(a1[j].n==a1[j-1].n&&j-1>=1)//是否等于前一位
            {
                for(int k=j; k>=2; k--)
                {
                    if(a1[k].n==a1[k-1].n&&a1[k].a<a1[k-1].a)
                    {
                        num t = a1[k-1];
                        a1[k-1] = a1[k];
                        a1[k] = t;
                    }
                }
            }
        }
        if(type==2)//第二种
        {
            cin>>x;
            for(int j=1; j<=n; j++)
            {
                if(a1[j].a==x) //找原数组的编号
                {
                    ans[y]=j;
                    y++;
                    break;
                }
            }
        }
    }
    for(int i=0; i<y; i++)
    {
        cout<<ans[i]<<endl;
    }
    return 0;
}
2022/10/2 18:25
加载中...