社区讨论

QwQ,52,超时,有注释

P7910[CSP-J 2021] 插入排序参与者 3已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@lo2t4yiu
此快照首次捕获于
2023/10/23 19:21
2 年前
此快照最后确认于
2023/10/23 19:21
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;

struct awa//随便起的~
{
    int last;//emm,就是辨认是不是那个“原来 a 的第 x 个元素, ”    
    int ans;//实际数据
}a[100000],b[100000],tmp;

int x,u,s;

int main(){
    
    //正常输入
    int n,q;
    cin>>n>>q;
    
    //输入数组
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i].ans);
        a[i].last=0;
    }
    
    //操作
    for(int i=1;i<=q;i++)
    {
        //输入操作类型
        scanf("%d",&s);
        
        //“分类讨论”
        if(s==1)//情况1
        {
            //输入下标以及替换数据
            scanf("%d %d",&x,&u);
            
            //替换
            a[x].ans=u;
        }
        else if(s==2)//情况2
        {
            //输入的查询的第 x 个元素
            scanf("%d",&x);
            
            //复制原数组
            memcpy(b+1,a+1,sizeof(a));
            
            //标记第 x 个元素
            b[x].last=1;
            
            //排序
            for (int i=1;i<=n;i++)
            	for (int j=i;j>=2;j--)
            		if (b[j].ans<b[j-1].ans) 
            		{
            			tmp = b[j-1];
            			b[j-1] = b[j];
            			b[j] = tmp;
            		}
            
            //遍历
            for(int i=1;i<=n;i++)
            {
                //发现标记!
                if(b[i].last==1)
                {
                    //输出下标~
                    printf("%d\n",i);
                    
                    //标记清空
                    b[i].last=0;
                    
                    //退出循环
                    break;
                }
            }
        }
    }
    
    
    return 0;
}

回复

8 条回复,欢迎继续交流。

正在加载回复...