CSES - Datatähti 2017 alku - Results
Submission details
Task:Järjestys
Sender:inkeri
Submission time:2016-10-11 13:18:56 +0300
Language:Python2
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED19
#2ACCEPTED37
#3ACCEPTED44
Test results
testverdicttimegroup
#1ACCEPTED0.06 s1details
#2ACCEPTED0.06 s2details
#3ACCEPTED0.30 s3details

Code

def main():
    maara = int(input(""))
    luvut = [int(a) for a in raw_input("").split(' ')]
    kohdat = [None] * (maara + 1)
    for i in xrange(maara):
        kohdat[luvut[i]] = i
    suurin = maara; kaannot = []
    while True:
        luku1 = luvut[0] #katsotaan ensimmainen luku
        if luku1 == 1: #jos luku on 1, vaihdetaan sen paikkaa suurimman kanssa
            if suurin == 1:
                break
            while True:
                luku2 = suurin
                kohta = kohdat[luku2]
                if kohta != luku2 - 1:
                    break
                else:
                    suurin -= 1
            if suurin == 0:
                break
            if kohta != 1:
                kaannot.extend((str(kohta + 1) + " ", str(kohta) + " ",\
                                str(kohta - 1) + " ", str(kohta) + " "))
            else:
                kaannot.append(str(kohta + 1) + " ")
            kohdat[luku2] = 0
            kohdat[luku1] = kohta
            luvut[kohta] = 1
            luvut[0] = luku2
        else: #muuten laitetaan luku sen oikeaan paikkaan
            luku2 = luvut[luku1 - 1]
            if luku1 != 2:
                kaannot.extend((str(luku1) + " ", str(luku1 - 1) + " ",\
                                str(luku1 - 2) + " ", str(luku1 - 1) + " ")) #kaannot
            else:
                kaannot.append("2 ")
            luvut[0] = luku2
            luvut[luku1 - 1] = luku1
            kohdat[luku2] = 0
            kohdat[luku1] = luku1 - 1

    print len(kaannot)
    print "".join(kaannot)


main()

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
10
9 3 4 7 6 5 10 2 8 1

correct output
32
10 10 9 10 9 8 7 9 4 2 1 4 5 2...

user output
37
9 8 7 8 8 7 6 7 2 3 2 1 2 4 3 ...

Test 2

Group: 2

Verdict: ACCEPTED

input
1000
650 716 982 41 133 1000 876 92...

correct output
3984
207 207 206 207 128 127 126 12...

user output
3997
650 649 648 649 328 327 326 32...

Test 3

Group: 3

Verdict: ACCEPTED

input
100000
94703 47808 62366 31885 7091 8...

correct output
399956
98676 98676 98675 98676 62994 ...

user output
400029
94703 94702 94701 94702 71577 ...