/dk 求找错
查看原帖
/dk 求找错
326382
Thomas_Cat楼主2020/9/11 23:21

样例过了,但是0分 /dk

求帮忙调试。

思路:找到最后排序之后即可。

#include <iostream>
#include <algorithm>
using namespace std;
int n, m, a[1000001];
bool cmp(int a, int b) {
	return a > b;
}
void qswap() {
	for (int i = 1; i <= n / 2; i++) swap(a[i], a[n - i + 1]);
}
int main() {
	cin >> n >> m;
	for (int i = 1; i <= m; i++) a[i] = i;
	int flag = 0;
	int b[1000001], c[1000001] = { 0 }, d[10000001] = { 0 };
	for (int i = 1; i <= n; i++) {
		cin >> b[i];
		if (b[i] == 1 || b[i] == 2) flag = i;
		if (b[i] == 3) {
			cin >> c[i] >> d[i];
		}
	}
	if (b[flag] == 1) sort(a + 1, a + n + 1);
	if (b[flag] == 2) sort(a + 1, a + n + 1, cmp);
	for (int i = flag + 1; i <= n; i++) {
		if (b[i] == 3) swap(a[c[i]], a[d[i]]);
		if (b[i] == 4) qswap();
	}
	for (int i = 1; i <= n-1; i++) cout << a[i] << ' ';
	cout<< a[n];
	return 0;
}
2020/9/11 23:21
加载中...