CSES - Datatähti 2022 alku - Results
Submission details
Task:Spiraali (Spiral)
Sender:AnttiE
Submission time:2021-10-05 17:58:48
Language:PyPy3
Status:READY
Result:35
Feedback
groupverdictscore
#1ACCEPTED15
#2ACCEPTED20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.04 s1details
#2ACCEPTED0.10 s2details
#3--3details

Code

# meni moti nodeen joten python aika

def dist(r1, c1, r2, c2):
    return abs(r2 - r1) + abs(c2 - c1)

def solve(size, r, c):
    centers = [
        (size / 2, 1, 0), # left
        (size, size / 2, 1), # bottom
        ((size / 2) + 1, size, 2), # right
        (1, (size / 2) + 1, 3) # top
    ]
    for center in centers:
        if dist(center[0], center[1], r, c) <= (size / 2) - 1:
            ans = None
            if center[2] == 0:
                ans = 0
                for i in range(c - 1):
                    ans += (size - 1 - (i * 2)) * 4
                ans += r - (c - 1)
            elif center[2] == 1:
                ans = size - 1
                for i in range(size - r):
                    ans += (size - 1 - (i * 2)) * 4 - 2
                ans += c - (size - r)
            elif center[2] == 2:
                ans = (size - 1) * 2
                for i in range(size - c):
                    ans += (size - 1 - (i * 2)) * 4 - 4
                ans += (size - r) - (size - c) + 1
            elif center[2] == 3:
                ans = (size - 1) * 3
                for i in range(r - 1):
                    ans += (size - 1 - (i * 2)) * 4 - 7
                ans += (size - c) + 1
            return ans

[size, count] = [int(x) for x in input().split(" ")]

tests = [[int(x) for x in input().split(" ")] for _ in range(count)]

for test in tests:
    print(solve(size, test[0], test[1]))

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)