| Task: | Sorting |
| Sender: | oleh1421 |
| Submission time: | 2021-02-01 14:30:47 +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.01 s | 1, 2 | details |
| #2 | ACCEPTED | 0.01 s | 2 | details |
| #3 | ACCEPTED | 0.01 s | 1, 2 | details |
| #4 | ACCEPTED | 0.01 s | 1, 2 | details |
Compiler report
input/code.cpp: In function 'void dfs(std::vector<int>)':
input/code.cpp:15:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0;i+3<v.size();i++){
~~~^~~~~~~~~
input/code.cpp:16:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int j=i+2;j+1<v.size();j++){
~~~^~~~~~~~~
input/code.cpp: In function 'void solve()':
input/code.cpp:33:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (v.back()==v.size()) v.pop_back();
~~~~~~~~^~~~~~~~~~
input/code.cpp:34:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
else if (v[(int)v.size()-2]==v.size()){
input/code.cpp:41:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
} else if (v[0]==v.size()){
input/code.cpp:51:27: warning: comparison bet...Code
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("unroll-loops")
//#pragma GCC target("avx")
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N=500100;
#define endl '\n'
map<vector<int>,bool>used;
void dfs(vector<int>v){
used[v]=true;
// cout<<used.size()<<endl;
// for (int i:v) cout<<i<<" ";
// cout<<endl;
for (int i=0;i+3<v.size();i++){
for (int j=i+2;j+1<v.size();j++){
swap(v[i],v[j]);
swap(v[i+1],v[j+1]);
if (!used[v]) dfs(v);
swap(v[i+1],v[j+1]);
swap(v[i],v[j]);
}
}
}
void solve(){
int n;cin>>n;
vector<int>v;
for (int i=1;i<=n;i++){
int x;cin>>x;
v.push_back(x);
}
while (v.size()>6){
if (v.back()==v.size()) v.pop_back();
else if (v[(int)v.size()-2]==v.size()){
swap(v[(int)v.size()-4],v[(int)v.size()-2]);
swap(v[(int)v.size()-3],v[(int)v.size()-1]);
swap(v[(int)v.size()-4],v[(int)v.size()-1]);
swap(v[(int)v.size()-5],v[(int)v.size()-2]);
// cout<<"OK "<<v.back()<<endl;
v.pop_back();
} else if (v[0]==v.size()){
swap(v[0],v[2]);
swap(v[1],v[3]);
int pos=2;
swap(v[pos],v[(int)v.size()-1]);
swap(v[pos-1],v[(int)v.size()-2]);
// cout<<"OK "<<v.back()<<endl;
v.pop_back();
} else {
int pos=-1;
for (int i=0;i<v.size();i++){
if (v[i]==v.size()){
pos=i;
break;
}
}
swap(v[pos],v[(int)v.size()-1]);
swap(v[pos-1],v[(int)v.size()-2]);
// cout<<"OK "<<v.back()<<endl;
v.pop_back();
}
}
// for (int i:v) cout<<i<<" ";
// cout<<endl;
if (used[v]) cout<<"YES\n";
else cout<<"NO\n";
}
int32_t main()
{
vector<int>v;
for (int i=1;i<=6;i++){
v.push_back(i);
dfs(v);
}
ios_base::sync_with_stdio(false);
cin.tie(0);
int tt;cin>>tt;
while (tt--){
solve();
}
///7 2 5 8 1 3 4 6
return 0;
}
//1 1 1 1 1 1 1 1 1 1 1 1 1
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 |
