社区讨论
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 条回复,欢迎继续交流。
正在加载回复...