Submission #922608

#TimeUsernameProblemLanguageResultExecution timeMemory
922608maxFedorchukCat (info1cup19_cat)C++17
100 / 100
305 ms31568 KiB
#include "bits/stdc++.h" using namespace std; const long long MX=2e5+10; int a[MX]; int p[MX]; pair < int , int > vp1[MX]; pair < int , int > vp2[MX]; int n; void swp(int i,int j) { swap(a[i], a[j]); swap(p[a[i]], p[a[j]]); swap(a[n - i + 1], a[n - j + 1]); swap(p[a[n - i + 1]], p[a[n - j + 1]]); } void fun() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; p[a[i]] = i; } for (int i = 1; i <= n / 2; i++) { if (a[i] + a[n - i + 1] != (n + 1)) { cout << "-1\n"; return; } } int o1 = 0, o2 = 0; for (int i = 1; i <= n / 2; i++) { if (a[i] == i) { continue; } if (a[i] == (n - i + 1)) { vp1[++o1] = make_pair(i, n - i + 1); } else { vp2[++o2] = make_pair(i, p[i]); swp(i, p[i]); } } if (o1 & 1) { cout << "-1\n"; return; } while (o1) { vp2[++o2] = make_pair(vp1[o1].first, vp1[o1 - 1].first); vp2[++o2] = make_pair(vp1[o1].first, vp1[o1 - 1].second); o1 -= 2; } cout << o2 << " " << o2 << "\n"; for (int i = 1; i <= o2; i++) { cout << vp2[i].first << " " << vp2[i].second << "\n"; } } int main() { cin.tie(0); ios_base::sync_with_stdio(0); int t; cin >> t; while (t--) { fun(); } }
#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...