Task: | Sorting |
Sender: | ajpiano |
Submission time: | 2021-01-30 18:58:27 +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 | RUNTIME ERROR | 0.01 s | 1, 2 | details |
#4 | RUNTIME ERROR | 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){ int pa = pos[a], pb = pos[b]; swap(pos[nums[pa-1]],pos[nums[pb-1]]); swap(nums[pa-1], nums[pb-1]); swap(nums[pa], nums[pb]); swap(pos[a], pos[b]); } vector<int> go = { 1234, 3412, 1423, 3241, 2314, 4132, 4321, 2143, 2431, 4213, 3124, 1342}; vector<bool> found(10000,0); 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%10000 == 5678) cout << cur/10000 << "\n"; // for(int i = 2; i <= 8; i++){ // for(int j = i+2; j <= 8; 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(n == 4){ if(vtoi() == 3412) good = 1; }else if(n2 == 4){ if(found[vtoi()]) good = 1; } if(good) cout << "YES\n"; else cout << "NO\n"; } // nums = {0,1,2,3,4,5,6,7,8}; // pos = {0,1,2,3,4,5,6,7,8}; // gothr(); 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: RUNTIME ERROR
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 |
---|
(empty) |
Error:
double free or corruption (out)
Test 4
Group: 1, 2
Verdict: RUNTIME ERROR
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 |
---|
(empty) |
Error:
double free or corruption (out)