Task: | Vaihdot |
Sender: | Sisuaski |
Submission time: | 2020-10-17 04:13:50 +0300 |
Language: | C++ (C++17) |
Status: | READY |
Result: | 0 |
group | verdict | score |
---|---|---|
#1 | RUNTIME ERROR | 0 |
#2 | RUNTIME ERROR | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | RUNTIME ERROR | 0.61 s | 1, 2 | details |
#2 | ACCEPTED | 0.04 s | 2 | details |
Code
#include <iostream>#include <vector>using namespace std;int v[128];vector<pair<int,int>> res;void addSwap(int a, int b) {res.emplace_back(a,b);swap(v[a],v[b]);}int main() {int t;cin>>t;while(t--){int n;cin>>n;res.clear();for(int i=0;i<n;++i)cin>>v[i],--v[i];for(int i=0;i<n;){int x = v[i];if (x==i) {i++;} else if (x==i-1 || x==i+1) {int a = min(x,i), b = max(x,i);int t = a-2;if (t<0) t = b+2;if (t>=n) {if (a>0 && b<n-1) {addSwap(b,0);addSwap(a,n-1);addSwap(0,n-1);addSwap(b,0);addSwap(a,n-1);} else {cout<<"-1\n";goto next;}}addSwap(a,t);addSwap(b,t);addSwap(a,t);} else {addSwap(x,i);}}cout<<res.size()<<'\n';for(auto [a,b]: res) cout<<a+1<<' '<<b+1<<'\n';next:;}}
Test details
Test 1
Group: 1, 2
Verdict: RUNTIME ERROR
input |
---|
1000 1 1 2 1 2 ... |
correct output |
---|
0 0 -1 0 -1 ... |
user output |
---|
0 0 -1 0 -1 ... |
Test 2
Group: 2
Verdict: ACCEPTED
input |
---|
1000 79 49 42 77 41 37 61 46 55 7 72 4... |
correct output |
---|
81 67 79 70 78 3 77 60 76 ... |
user output |
---|
79 49 1 10 1 72 1 38 1 ... Truncated |