Task: | Sorting |
Sender: | stephan |
Submission time: | 2021-01-30 05:14:37 +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.17 s | 1, 2 | details |
#2 | ACCEPTED | 0.99 s | 2 | details |
#3 | ACCEPTED | 0.72 s | 1, 2 | details |
#4 | ACCEPTED | 0.99 s | 1, 2 | details |
Code
///By Stephan Ramirez dsramirezc@unal.edu.co #include<bits/stdc++.h> #define ms(a,v) memset(a,v,sizeof a) #define ll long long #define N 105 #define MAXN 20004 using namespace std; int T; int n; int arr[N]; int pos[N]; void sw(int x,int y){ swap(arr[x],arr[y]); swap(arr[x+1],arr[y+1]); pos[arr[x]]=x; pos[arr[x+1]]=x+1; pos[arr[y]]=y; pos[arr[y+1]]=y+1; } const int range_from = 0; const int range_to = 100; std::random_device rand_dev; std::mt19937 generator(rand_dev()); std::uniform_int_distribution<int> distr(range_from, range_to); int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); #ifdef LOCAL freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout) ; #endif cin>>T; while(T--){ cin>>n; for(int i=0;i<n;i++){ cin>>arr[i]; arr[i]--; pos[arr[i]]=i; } bool f=false; for(int j=0;j<200;j++){ for(int i=0;i<100;i++){ int l=distr(generator)%n; int r=distr(generator)%n; if(l>r) swap(l,r); if(l+1<r && r<n-1) sw(l,r); } for(int i=0;i<n;i++){ if(pos[i]==i){ if(i==n-1){ f=true; break; } continue; } if(pos[i]==i+1){ if(i+3<n-1){ sw(i+1,i+3); i--; continue; } break; } if(pos[i]==n-1){ if(i<=n-4){ sw(n-4,n-2); i--; continue; } break; } sw(pos[i],i); i--; } if(f) break; } if(f) cout<<"YES\n"; else cout<<"NO\n"; } 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 |