CSES - Putka Open 2020 – 3/5 - Results
Submission details
Task:Vaihdot
Sender:Metabolix
Submission time:2020-10-16 18:52:35 +0300
Language:CPython3
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
Test results
testverdicttimegroup
#10.05 s1, 2details
#2ACCEPTED0.23 s2details

Code

#!/usr/bin/python3

t = int(input())
for _ in range(t):
	n = int(input())
	luvut = [0] + list(map(int, input().split()))
	paikat = [luvut.index(i) for i in range(n+1)]
	vaihdot = []
	mahdoton = False
	for i in range(n+1):
		if luvut[i] != i:
			j = paikat[i]
			li = luvut[i]
			lj = luvut[j]
			if i+1 < j:
				vaihdot.append("%d %d" % (i, j))
				luvut[i], luvut[j] = luvut[j], luvut[i]
				paikat[li], paikat[lj] = paikat[lj], paikat[li]
			else:
				if i >= 3:
					k = 1
				elif i <= n - 3:
					k = i + 3
				else:
					mahdoton = True
					break
				lk = luvut[k]
				vaihdot.append("%d %d" % (i, k))
				luvut[i], luvut[k] = luvut[k], luvut[i]
				paikat[li], paikat[lk] = paikat[lk], paikat[li]
				vaihdot.append("%d %d" % (k, j))
				luvut[k], luvut[j] = luvut[j], luvut[k]
				paikat[lk], paikat[lj] = paikat[lj], paikat[lk]
				vaihdot.append("%d %d" % (i, k))
				luvut[i], luvut[k] = luvut[k], luvut[i]
				paikat[li], paikat[lk] = paikat[lk], paikat[li]
	if mahdoton:
		print("-1")
	else:
		print(len(vaihdot))
		for v in vaihdot:
			print(v)

Test details

Test 1

Group: 1, 2

Verdict:

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
83
1 58
2 45
3 16
4 29
...