CSES - Datatähti 2022 alku - Results
Submission details
Task:Spiraali
Sender:jaaskelainen
Submission time:2021-10-07 00:25:28 +0300
Language:Python3 (CPython3)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.03 s1details
#20.42 s2details
#3--3details

Code

def move(dir):
        global step
        global size
        global x
        global y
        global newX
        global newY
        global ans

        for z in range(size-1):
            newY+=1
            step+=1

            if(newY == y and newX == x):
                ans.append(step)
                break

c = input("")

c = c.split()

n = int(c[0])
t = int(c[1])

ans = []

for s in range(t):
    i = input("")
    coord = i.split()

    y = int(coord[0])
    x = int(coord[1])

    size = n
    step = 0
    maxsize = n

    if(x == 1 and y== 1):
        step = 1
        ans.append(step)
    elif(x-y == 1):
        step = (x-1)*4*n - (((x-1)**2)*4)
        ans.append(step)

    elif(x-y < 1):


        if(y == n):
            step = 1
            newX = 1
            newY = 1            

        elif(x <= n/2):
            step = ((x-1))*4*n - ((((x-1))**2)*4)
            size -= 2*(x-1)

            newX = x
            newY = x-1
        
        else:
            step = ((((n+1)-x)))*4*n - ((((((n+1)-x)))**2)*4)+1
            newX = (n+1)-x
            newY = (n+1)-x




        ansExists = False

        z = 0

        while(z < (size-1) and ansExists==False):
            newY+=1
            step+=1

            if(newY == y and newX == x):
                ans.append(step)
                ansExists = True
            
            z+=1
    

        z = 0
        while(ansExists == False and z < (size-1)):
            newX+=1
            step+=1

            if(newY == y and newX == x):
                ans.append(step)
                ansExists = True
            
            z+=1
            
        z = 0
        while(ansExists == False and z < (size-1)):
            newY-=1
            step+=1

            if(newY == y and newX == x):
                ans.append(step)
                ansExists = True
            z += 1

        z = 0
        while(ansExists == False and z < (size-1)):
            newX-=1
            step+=1

            if(newY == y and newX == x):
                ans.append(step)
                ansExists = True
            z += 1

    else:

        if(x == n):
            step = 1
            newX = 1
            newY = 1
        elif(y<=n/2):
            step = ((y))*4*n - ((((y))**2)*4)
            size -= 2*(y)
            
            newY = y
            newX = y+1
        else:
            step = ((((n+1)-y)))*4*n - ((((((n+1)-y)))**2)*4)+1
            newX = (n+1)-y
            newY = (n+1)-y


        difX = newX - x 
        difY = newY - y


        if(difX < 0 and difY == 0):
            step += difX
            ans.append(step)
        else:
            ansExists = False

            z = 0

            while(z < (size-1) and ansExists==False):
                newY+=1
                step+=1

                if(newY == y and newX == x):
                    ans.append(step)
                    ansExists = True
                
                z+=1
        

            z = 0
            while(ansExists == False and z < (size-1)):
                newX+=1
                step+=1

                if(newY == y and newX == x):
                    ans.append(step)
                    ansExists = True
                
                z+=1
                
            z = 0
            while(ansExists == False and z < (size-1)):
                newY-=1
                step+=1

                if(newY == y and newX == x):
                    ans.append(step)
                    ansExists = True
                z += 1

            z = 0
            while(ansExists == False and z < (size-1)):
                newX-=1
                step+=1

                if(newY == y and newX == x):
                    ans.append(step)
                    ansExists = True
                z += 1            




for x in ans:
    print(x)

Test details

Test 1

Group: 1

Verdict:

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

Test 2

Group: 2

Verdict:

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

correct output
773533
312166
206053
200080
593922
...

user output
773533
200080
724839
842835
252769
...
Truncated

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)