CSES - Putka Open 2020 – 3/5 - Results
Submission details
Task:Vaihdot
Sender:Metabolix
Submission time:2020-10-16 19:13:56 +0300
Language:Python3 (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
...
Truncated

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