제출 #522286

#제출 시각아이디문제언어결과실행 시간메모리
522286amunduzbaevCat (info1cup19_cat)C++17
0 / 100
22 ms536 KiB
#include "bits/stdc++.h" using namespace std; #define ar array typedef long long ll; void solve(){ int n; cin>>n; vector<int> a(n); for(int i=0;i<n;i++) cin>>a[i]; vector<int> pos(n); for(int i=0;i<n;i++) pos[--a[i]] = i; vector<ar<int, 2>> res; auto add = [&](int i, int j){ int i_ = n - i - 1, j_ = n - j - 1; assert(j != i_); swap(a[i], a[j]); swap(pos[a[i]], pos[a[j]]); res.push_back({i, j}); swap(a[i_], a[j_]); swap(pos[a[i_]], pos[a[j_]]); }; for(int i=0;i<n/2;i++){ if(a[i] == i) continue; int j = pos[i]; if(j < n/2){ add(i, j); } else { if(n - j - 1 < i){ cout<<-1<<"\n"; return; } if(n - j - 1 == i){ if(i + 1 == j){ cout<<-1<<"\n"; return; } add(i, i + 1); add(i, pos[i]); } else { add(i, j); } } } cout<<(int)res.size()<<" "<<(int)res.size()<<"\n"; for(auto x : res) cout<<x[0] + 1<<" "<<x[1] + 1<<"\n"; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); int t; cin>>t; while(t--){ solve(); } } /* 10 4 9 6 3 1 ' 10 8 5 2 7 1 9 6 3 4 ' 7 8 5 2 10 1 2 3 4 5 ' 6 7 8 9 10 6 2 6 4 ' 3 1 5 1 2 3 ' 4 5 6 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...