52分代码求助
查看原帖
52分代码求助
637499
zhangzhiqiao0130楼主2022/9/24 20:43
#include<iostream>
#include<algorithm>
using namespace std;
int n, Q, a[8010], flag = 0;
struct stu {
    int num, id;
}b[8010];
int cmp(stu a, stu b) { // 返回 0 说明要把 a 和 b 交换。
    if(a.num != b.num) {
        return a.num < b.num;
    } else {
        return a.id < b.id;
    }
}
// 以上不需要修改,只要修改下面的部分。
int main() {
    cin >> n >> Q; // 读入 n 和 Q
    for(long long i=1;i<=n;i++) { // 读入 n 个数组 a[i]
		cin>>a[i];
    }
    for(long long t=1;t<=Q;t++) { // t 从 1 到 Q
        int opr, x, v;
        // 读入 opr,也就是操作类型 
        cin>>opr;
        if(opr==1) { // 如果操作类型是 1
            // 读入 x 和 v
            cin>>x>>v;
            // 将 a 的数组的第 x 个元素的值设置为 v
            a[x]=v;
            // flag 开关关掉 
            flag=0;
        }
        if(opr==2) { // 如果操作类型是 2
            // 读入 x 
            cin>>x;
            if(flag==0) { //如果开关是关的
                for(long long i=1;i<=n;i+=1) 
				{ // 将 a 数组复制进 b 数组
					// b[i] 元素的 num 设置为 a[i]
					b[i].num=a[i];
                    // b[i] 元素的 id 设置为 i
                    b[i].id=i;
                }
                // 对数组 b 用 sort 排序,别忘了 cmp
                sort(b+1,b+n+1,cmp);
                // 把开关打开。
                flag=1;
            }
            for(long long i=1;i<=n;i++) { // 枚举 b 的每一个元素
                if(b[i].id==x) {  // 如果 b[i] 的 id 的值就是要询问的 x
                    // 输出 b[i] 元素的位置编号,也就是排序后第几个
                    cout<<i<<endl;
                    break;
                }
            }
        }
    }
    return 0;
}
2022/9/24 20:43
加载中...