样例过了,但是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;
}