| Task: | Sorting |
| Sender: | pidddgy |
| Submission time: | 2021-01-31 21:09:33 +0200 |
| Language: | C++ (C++11) |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 36 |
| #2 | ACCEPTED | 64 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.20 s | 1, 2 | details |
| #2 | ACCEPTED | 0.21 s | 2 | details |
| #3 | ACCEPTED | 0.20 s | 1, 2 | details |
| #4 | ACCEPTED | 0.20 s | 1, 2 | details |
Code
#include <bits/stdc++.h>
using namespace std;
// #define cerr if(false) cerr
#define watch(x) cerr << (#x) << " is " << (x) << endl;
#define endl '\n'
#define ld long double
#define int long long
#define pii pair<int, int>
#define fi first
#define se second
#define sz(a) (int)(a).size()
#define y1 lsdjkfhshfdsighoihweogihewoghi
#define all(x) (x).begin(), (x).end()
const int maxn = 10;
int n;
set<vector<int>> vis[10];
map<vector<int>, vector<int>> par;
void solve() {
cin >> n;
vector<int> a;
for(int i = 1; i <= n; i++) {
int x;
cin >> x;
a.push_back(x);
}
if(n <= 8) {
if(vis[n].count(a)) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
} else {
int inv = 0;
for(int i = 0; i < n; i++) {
for(int j = i+1; j < n; j++) {
if(a[i] > a[j]) inv++;
}
}
if(inv % 2 == 0) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
for(int len = 1; len <= 8; len++) {
vector<int> a;
for(int i = 1; i <= len; i++) {
a.push_back(i);
}
vector<int> orig = a;
queue<vector<int>> Q;
Q.push(a);
vis[len].emplace(a);
while(!Q.empty()) {
vector<int> v = Q.front(); Q.pop();
for(int i = 0; i+1 < sz(v); i++) {
for(int j = i+2; j+1 < sz(v); j++) {
vector<int> cpy = v;
swap(v[i], v[j]);
swap(v[i+1], v[j+1]);
if(!vis[len].count(v)) {
par[v] = cpy;
Q.push(v);
vis[len].emplace(v);
}
swap(v[i], v[j]);
swap(v[i+1], v[j+1]);
}
}
}
}
int t;
cin >> t;
while(t--) solve();
}
/*
40 320 000
322 560 000
*/
// Did you read the bounds?
// Did you make typos?
// Are there edge cases (N=1?)
// Are array sizes proper?
// Integer overflow?
// DS reset properly between test cases?
// Is using long longs causing TLE?
// Are you using floating points?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 |
