CSES - Datatähti 2021 loppu - Results
Submission details
Task:Järjestäminen
Sender:intoo
Submission time:2021-01-23 19:02:18 +0200
Language:C++17
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
Test results
testverdicttimegroup
#10.01 s1, 2details
#20.02 s2details
#30.01 s1, 2details
#40.01 s1, 2details

Code

#include <iostream>
#include <vector>

using namespace std;

void swappair(vector<int>& v, vector<int>& d, int i, int j) {
	swap(v[i+1], v[j+1]);
	swap(d[v[i+1]], d[v[j+1]]);
	swap(v[i], v[j]);
	swap(d[v[i]], d[v[j]]);
}

int main() {
	int t;
	cin >> t;
	while (t --> 0) {
		int n;
		cin >> n;
		vector<int> v(n), d(n);
		for (int i = 0; i < n; ++i) {
			cin >> v[i];
			d[--v[i]] = i;
		}
		bool b = 0;
		for (int i = 0; i < n; ++i) {
			if (d[i] == i) continue;
			if ((d[i] == n-1 && i > n-4) || (n-d[i]-2 < 2 && d[i]-i < 2)) {
				cout << "NO\n";
				b = 1;
				break;
			} else if (d[i] == n-1) {
				swappair(v, d, i+1, d[i]-1);
				swappair(v, d, i, d[i]);
			} else if (d[i]-i > 1) {
				//cout << "else if: " << i << ' ' << d[i] << endl;
				swappair(v, d, i, d[i]);
			} else {
				//cout << "else: " << i << ' ' << d[i] << endl;
				swappair(v, d, d[i], d[i]+2);
				swappair(v, d, i, d[i]);
			}
		}
		if (b) continue;
		cout << "YES\n";
	}
}

Test details

Test 1

Group: 1, 2

Verdict:

input
153
1
1
2
1 2
...

correct output
YES
YES
NO
NO
NO
...

user output
YES
YES
NO
NO
NO
...

Test 2

Group: 2

Verdict:

input
1000
59
35 29 32 50 11 15 9 21 19 45 2...

correct output
YES
NO
YES
NO
YES
...

user output
NO
NO
NO
NO
NO
...

Test 3

Group: 1, 2

Verdict:

input
720
6
1 6 4 5 2 3
6
6 3 2 1 5 4
...

correct output
YES
NO
NO
NO
YES
...

user output
NO
NO
NO
NO
YES
...

Test 4

Group: 1, 2

Verdict:

input
1000
8
7 4 2 8 6 3 5 1
8
3 8 2 7 5 4 6 1
...

correct output
NO
NO
YES
NO
YES
...

user output
NO
NO
NO
NO
NO
...