Task: | Sorting |
Sender: | nigus |
Submission time: | 2021-01-30 15:17:10 +0200 |
Language: | C++ (C++17) |
Status: | READY |
Result: | 0 |
group | verdict | score |
---|---|---|
#1 | WRONG ANSWER | 0 |
#2 | WRONG ANSWER | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | WRONG ANSWER | 0.10 s | 1, 2 | details |
#2 | WRONG ANSWER | 0.11 s | 2 | details |
#3 | ACCEPTED | 0.10 s | 1, 2 | details |
#4 | ACCEPTED | 0.10 s | 1, 2 | details |
Compiler report
input/code.cpp: In function 'int main()': input/code.cpp:103:10: warning: unused variable 'b' [-Wunused-variable] ll a,b,c,d; ^ input/code.cpp:103:12: warning: unused variable 'c' [-Wunused-variable] ll a,b,c,d; ^ input/code.cpp:103:14: warning: unused variable 'd' [-Wunused-variable] ll a,b,c,d; ^
Code
#pragma GCC optimize("O3") // #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for(int i = a; i < (b); ++i) #define per(i, b, a) for(int i = b - 1; i >= a; i--) #define trav(a, x) for(auto& a : x) #define all(x) x.begin(), x.end() #define sz(x) (int)(x).size() typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef vector<int> vi; typedef vector<ll> vl; typedef long double ld; typedef unsigned long long ull; unsigned seed = chrono::system_clock::now().time_since_epoch().count(); mt19937 eng(seed); ll random2(){ return (1ll << 31ll)*eng()+eng(); } ll n,m,k,q,T; const ll big = 1000000007; const ll big2 = 1000000009; const ll mod = 998244353; const int MAXN = 400002; vi A; void answer(bool ans){ if(ans){ cout << "YES\n"; } else{ cout << "NO\n"; } } set<ll> S; ll has(vi P){ ll h = sz(P); trav(a, P){ h *= 15264; h += a; } return h; } void bfs(int k){ queue<vi> Q; vi temp; rep(c1,0,k){ temp.push_back(c1); } Q.push(temp); while(!Q.empty()){ vi V = Q.front(); Q.pop(); ll h = has(V); if(S.find(h) != S.end())continue; S.insert(h); /* if(k == 5){ rep(c1,0,k){ cerr << V[c1]+1 << " "; }cerr << " hh\n"; } */ vi temp2; rep(c1,0,k){ temp2.push_back(V[c1]); } rep(c1,0,k-3){ swap(temp2[c1], temp2[c1+1]); rep(c2,c1+2,k-1){ swap(temp2[c2], temp2[c2+1]); ll h2 = has(temp2); if(S.find(h2) == S.end()){ Q.push(temp2); } swap(temp2[c2], temp2[c2+1]); } swap(temp2[c1], temp2[c1+1]); } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); //freopen("fhc.txt","r",stdin); //freopen("autput.txt","w",stdout); ll a,b,c,d; const int lim = 8; rep(c1,5,lim+1){ bfs(c1); } cin >> T; rep(c4,0,T){ cin >> n; A.clear(); int invs = 0; rep(c1,0,n){ cin >> a; a--; A.push_back(a); rep(c2,0,c1){ if(A[c2] > a)invs++; } } bool yes = (invs == 0); if(n <= 3){ answer(yes); continue; } if(n == 4){ yes |= (A[0] == 1 && A[1] == 0 && A[2] == 3 && A[3] == 2); answer(yes); continue; } if(n > 4){ if(invs%2 == 1){ answer(0); continue; } if(n <= lim){ ll h = has(A); if(S.find(h) == S.end()){ answer(0); } else{ answer(1); } continue; } answer(1); } } return 0; }
Test details
Test 1
Group: 1, 2
Verdict: WRONG ANSWER
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: WRONG ANSWER
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 |