CSES - Putka Open 2020 – 3/5 - Results
Submission details
Task:Vaihdot
Sender:Metabolix
Submission time:2020-10-16 19:13:56
Language:CPython3
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED35
#2ACCEPTED65
Test results
testverdicttimegroup
#1ACCEPTED0.05 s1, 2details
#2ACCEPTED0.18 s2details

Code

#!/usr/bin/python3

def f(luvut):
	n = len(luvut)
	luvut = [0] + luvut
	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))
			else:
				if i - 1 >= 2:
					vaihdot.append("%d %d" % (1, i))
					vaihdot.append("%d %d" % (1, j))
					vaihdot.append("%d %d" % (1, i))
				elif n - i >= 3:
					vaihdot.append("%d %d" % (i, n))
					vaihdot.append("%d %d" % (j, n))
					vaihdot.append("%d %d" % (i, n))
				elif 1 < i < j < n:
					vaihdot.append("%d %d" % (1, j))
					vaihdot.append("%d %d" % (i, n))
					vaihdot.append("%d %d" % (1, n))
					vaihdot.append("%d %d" % (1, j))
					vaihdot.append("%d %d" % (i, n))
				else:
					mahdoton = True
					break
			luvut[i], luvut[j] = luvut[j], luvut[i]
			paikat[li], paikat[lj] = paikat[lj], paikat[li]
	if mahdoton:
		print("-1")
	else:
		print(len(vaihdot))
		for v in vaihdot:
			print(v)

t = int(input())
for _ in range(t):
	n = int(input())
	f(list(map(int, input().split())))

Test details

Test 1

Group: 1, 2

Verdict: ACCEPTED

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