CSES - Datatähti Open 2021 - Results
Submission details
Task:Sorting
Sender:apostoldaniel854
Submission time:2021-01-29 22:18:47 +0200
Language:C++ (C++17)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED36
#2ACCEPTED64
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1, 2details
#2ACCEPTED0.02 s2details
#3ACCEPTED0.25 s1, 2details
#4ACCEPTED0.01 s1, 2details

Code

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define pb push_back
const int MAX_N = 100;
int p[1 + MAX_N];
map <vector <int>, bool> seen;
bool found;
void bkt (vector <int> v) {
if (found) return;
if (seen[v])
return;
seen[v] = true;
int n = v.size ();
bool good = true;
for (int i = 0; i < n; i++)
if (v[i] != i + 1)
good = false;
if (good)
found = true;
if (found)
return;
for (int i = 0; i + 1 < n; i++)
for (int j = i + 2; j + 1 < n; j++) {
vector <int> new_v = v;
swap (new_v[i], new_v[j]);
swap (new_v[i + 1], new_v[j + 1]);
bkt (new_v);
}
}
void solveTest () {
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> p[i];
if (n <= 6) {
vector <int> v;
seen.clear ();
found = false;
for (int i = 1; i <= n; i++)
v.pb (p[i]);
bkt (v);
if (found)
cout << "YES\n";
else
cout << "NO\n";
}
else {
int inv = 0;
for (int i = 1; i <= n; i++)
for (int j = i + 1; j <= n; j++)
if (p[i] > p[j])
inv++;
if (inv & 1)
cout << "NO\n";
else
cout << "YES\n";
}
}
int main () {
int t;
cin >> t;
while (t--)
solveTest ();
return 0;
}

Test details

Test 1

Group: 1, 2

Verdict: ACCEPTED

input
153
1
1
2
1 2
...

correct output
YES
YES
NO
NO
NO
...

user output
YES
YES
NO
NO
NO
...
Truncated

Test 2

Group: 2

Verdict: ACCEPTED

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

correct output
YES
NO
YES
NO
YES
...

user output
YES
NO
YES
NO
YES
...
Truncated

Test 3

Group: 1, 2

Verdict: ACCEPTED

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
YES
NO
NO
NO
YES
...
Truncated

Test 4

Group: 1, 2

Verdict: ACCEPTED

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
YES
NO
YES
...
Truncated