Submission #1170775

#TimeUsernameProblemLanguageResultExecution timeMemory
1170775browntoadCat (info1cup19_cat)C++20
39 / 100
1089 ms15036 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define int ll
#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define REP(i, n) FOR(i, 0, n)
#define REP1(i, n) FOR(i, 1, n+1)
#define RREP(i, n) for (int i = (n)-1; i >= 0; i--)
#define pii pair<int, int>
#define f first
#define s second
#define pb push_back
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) (int)((x).size())

#ifdef TOAD
#define IOS()
#else
#define IOS() ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#endif

const ll maxn = 1e5+5;
const ll mod = 1e9+7;
const ll inf = 1ll<<60;

signed main(){
	IOS();
	int T; cin>>T;
	while(T--){
		int n; cin>>n;
		vector<int> v(n), p(n);
		REP(i, n){
			cin>>v[i];
			v[i]--;
			p[v[i]] = i;
		}

		bool gg = false;
		bool oo = false;

		vector<int> specid;
		REP(i, n/2){
			if (v[i] < n/2){
				if (v[n-i-1] + v[i] != n-1){
					gg = 1;
					break;
				}
			}
			else{
				oo ^= 1;
				if (v[n-i-1] + v[i] != n-1){
					gg = 1;
					break;
				}
				swap(v[n-i-1], v[i]);
				p[v[i]] = i;
				specid.pb(i);
			}
		}
		// matching of specid, swap each swapping

		if (gg || oo){
			cout<<-1<<endl;
			continue;
		}
		vector<pii> ans;
		for(int i = 0; i < SZ(specid); i += 2){
			ans.pb({specid[i], n-specid[i+1]-1});
			swap(v[specid[i]], v[specid[i+1]]);
			p[v[specid[i]]] = specid[i];
			p[v[specid[i+1]]] = specid[i+1];
		}

		REP(i, n/2){
			if (v[i] == i) continue;
			int pp = p[i];
			ans.pb({i, pp});
			swap(v[i], v[pp]);
			p[v[i]] = i;
			p[v[pp]] = pp;
		}

		cout<<SZ(ans)<<' '<<SZ(ans)<<endl;
		for (auto pp:ans) cout<<pp.f+1<<' '<<pp.s+1<<endl;


	}
}
#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...