CSES - Datatähti 2022 alku - Results
Submission details
Task:Spiraali
Sender:Tipu
Submission time:2021-10-07 13:20:37 +0300
Language:CPython3
Status:READY
Result:35
Feedback
groupverdictscore
#1ACCEPTED15
#2ACCEPTED20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.03 s1details
#2ACCEPTED0.31 s2details
#3--3details

Code

def main():
    syöte = input()
    syöte = syöte.split()
    koko = int(syöte[0])
    kohdat = int(syöte[1])
    i = 0
    x = []
    y = []
    while i < kohdat:
        uus = input().split()
        x.append(int(uus[0]))
        y.append(int(uus[1]))
        i += 1
    matriisi = luoMatriisi(koko)
    i = 0
    while i < kohdat:
        print(matriisi[x[i]-1][y[i]-1])
        i += 1


def luoMatriisi(n: int):
    matriisi = []
    i = 0
    while i < n:
        matriisi.append(uusiRivi(i, n, matriisi))
        i += 1
    return matriisi

def uusiRivi(rivinro: int, koko: int, lista: list):
    if(rivinro > 0):
        edellinen = lista[rivinro - 1]
    rivi = []
    rivi.append(rivinro + 1)
    if rivinro < (koko / 2):
        i = 0
        while i < rivinro:
             # print("loop 1: " + str(rivinro) + ", " + str(i))
            rivi.append(edellinen[i + 1] + 1)
            i += 1

        edellinenluku = rivi[len(rivi)-1]
        #print(edellinenluku)
        kerroin = koko - rivinro * 2
        #print(kerroin)
        i = 0
        while len(rivi) < koko - rivinro:
             # print("loop 2: " + str(rivinro) + ", " + str(i))
            uusLuku = edellinenluku+(4*kerroin-4)
            rivi.append(uusLuku - (i + 1))
            i += 1
        
        i = koko - rivinro
        while len(rivi) < koko:
             # print("loop 3: " + str(rivinro) + ", " + str(i))    
            rivi.append(edellinen[i] - 1)
            i += 1

        # print("VÄLI")
    else:
        # print("reverse")
        i = 0
        while (i + 1 < koko - rivinro):
            # print("loop 1: " + str(rivinro) + ", " + str(i))
            rivi.append(edellinen[i + 1] + 1)
            i += 1
        
        i = 0
        while len(rivi) <= rivinro:
             # print("loop 2: " + str(rivinro) + ", " + str(i))
            rivi.append(rivi[len(rivi) - 1] + 1)
        
        i = rivinro
        while len(rivi) < koko:
             # print("loop 3: " + str(rivinro) + ", " + str(i))    
            rivi.append(edellinen[i + 1] - 1)
            i += 1


    return rivi

main()

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
10 100
1 1
1 2
1 3
1 4
...

correct output
1
36
35
34
33
...

user output
1
36
35
34
33
...

Test 2

Group: 2

Verdict: ACCEPTED

input
1000 1000
371 263
915 322
946 880
53 738
...

correct output
773533
312166
206053
200080
593922
...

user output
773533
312166
206053
200080
593922
...

Test 3

Group: 3

Verdict:

input
1000000000 1000
177757853 827347032
409613589 419171337
739269360 256524697
328695530 896842209
...

correct output
571375684522141210
967321186816598569
762879105851175000
370065046779516790
936897883750373771
...

user output
(empty)