| Task: | Sorting |
| Sender: | ajpiano |
| Submission time: | 2021-01-30 18:43:07 +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.01 s | 1, 2 | details |
| #2 | RUNTIME ERROR | 0.01 s | 2 | details |
| #3 | WRONG ANSWER | 0.01 s | 1, 2 | details |
| #4 | WRONG ANSWER | 0.01 s | 1, 2 | details |
Code
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
typedef long long ll;
typedef pair<int,int> pi;
vector<int> nums, pos;
//{a-1, a}, {b-1,b}
void sw(int a, int b){
swap(nums[pos[a]], nums[pos[b]]);
swap(pos[a], pos[b]);
swap(nums[pos[a-1]], nums[pos[b-1]]);
swap(pos[a-1], pos[b-1]);
}
vector<int> go = {
1234,
3412,
1423,
3241,
2314,
4132,
4321,
2143,
2431,
4213,
3124,
1342};
vector<bool> found(10000);
int vtoi(){
int ans = 0;
for(int i = 1; i <= 4; i++){
ans *= 10; ans += nums[i];
}
return ans;
}
//void gothr(){
// int cur = vtoi();
// if(found[cur]) return;
// found[cur] = 1;
// if(cur%100 == 56) cout << cur << "\n";
// for(int i = 2; i <= 6; i++){
// for(int j = i+2; j <= 6; j++){
// vector<int> tempn = nums, tempp = pos;
// sw(i,j);
// gothr();
// nums = tempn; pos = tempp;
// }
// }
//}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
int t; cin >> t;
for(auto &a: go) found[a] = 1;
while(t--){
int n; cin >> n;
nums.resize(n+1), pos.resize(n+1);
for(int i = 1; i <= n; i++) cin >> nums[i];
for(int i = 1; i <= n; i++) pos[nums[i]] = i;
int n2 = n;
for(; n2 > 4; n2--){
if(pos[n2] == n2) continue;
if(pos[n2] > 3){
sw(n2,nums[2]);
}
sw(n2, nums[n2]);
}
bool good = 1;
for(int i = 1; i <= n2; i++){
if(pos[i] != i) good = 0;
}
if(n2 == 4){
if(found[vtoi()]) good = 1;
}
if(good) cout << "YES\n";
else cout << "NO\n";
}
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: RUNTIME ERROR
| input |
|---|
| 1000 59 35 29 32 50 11 15 9 21 19 45 2... |
| correct output |
|---|
| YES NO YES NO YES ... |
| user output |
|---|
| (empty) |
Error:
double free or corruption (out)
Test 3
Group: 1, 2
Verdict: WRONG ANSWER
| 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: WRONG ANSWER
| 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 |
