Submission #315153

#TimeUsernameProblemLanguageResultExecution timeMemory
315153casperwangCat (info1cup19_cat)C++14
36.25 / 100
561 ms19504 KiB
#include <bits/stdc++.h> #define int long long #define pb push_back #define pii pair<int,int> #define ff first #define ss second using namespace std; const int MAXN = 3000000; int t, n; int a[MAXN+1]; int p[MAXN+1]; int tmp, cnt; vector <pii> ans; void solve(int N) { for (int i = 1; i <= N; i++) { if (a[i] != i) { ans.pb(pii(i, p[i])); swap(a[i], a[p[i]]); swap(p[a[i]], p[a[p[i]]]); } } } signed main() { ios_base::sync_with_stdio(0), cin.tie(0); cin >> t; while (t--) { cin >> n; bool tf = 1; for (int i = 1; i <= n; i++) cin >> a[i], p[a[i]] = i; ans.clear(); cnt = 0; for (int i = 1; i <= n/2 && tf; i++) { if (abs(a[n-i+1] + a[i]) != n+1) tf = 0; if (a[i] > n/2) { swap(a[n-i+1], a[i]); p[a[n-i+1]] = n-i+1; p[a[i]] = i; if (cnt % 2) ans.pb(pii(i, tmp)); cnt++; tmp = n-i+1; } } if (cnt % 2) tf = 0; if (!tf) { cout << -1 << "\n"; } else { solve(n/2); cout << ans.size() << " " << ans.size() << "\n"; for (pii o : ans) cout << o.ff << " " << o.ss << "\n"; } } }
#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...