CSES - Datatähti 2022 alku - Results
Submission details
Task:Spiraali (Spiral)
Sender:Waba
Submission time:2021-10-06 14:12:44
Language:PyPy3
Status:READY
Result:35
Feedback
groupverdictscore
#1ACCEPTED15
#2ACCEPTED20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.04 s1details
#2ACCEPTED0.09 s2details
#30.09 s3details

Code

n, t = input().split()
n = int(n)
t = int(t)

puolet = int(n/2)

list = []

for i in range (t):
	y1, x1 = input().split()
	y1 = int(y1)
	x1 = int(x1)
	list.append ([y1,x1])


for q in range (len(list)):
	y = list[q][0]
	x = list[q][1]
	kierros = 0
	
	summa = int(0)
	
	if (y <= int(n/2) and x <= int(n/2)):
		ky = (y-1)
		kx = (x-1)
		
		if (ky < kx):
			kierros = ky
		else:
			kierros = kx
		
		if (x==1+kierros):
			summa = 0*(n-kierros*2)+(y-kierros)
		else:
			summa =	3*(n-kierros*2) -2 + (n-x-kierros)
	
	
	elif (y > int(n/2) and x <= int(n/2)):
		ky = (n-y)
		kx = x-1
		
		if (ky < kx):
			kierros = ky
		else:
			kierros = kx
		
		if (x==1+kierros):
			summa = 0*(n-kierros*2)+(y-kierros)
		else:
			summa = 1*(n-kierros*2) -(1+kierros) + x
	 
	 
	elif (y > int(n/2) and x > int(n/2)):
		ky = (n-y)
		kx = (n-x)
		
		if (ky < kx):
			kierros = ky
		else:
			kierros = kx
		
		if (x==n-kierros):
			summa = 2*(n-kierros*2)-1+(n-y-kierros)
		else:
			summa =	 1*(n-kierros*2) -(1+kierros) + x
	else:
		ky = (y-1)
		kx = (n-x)
		
		if (ky < kx):
			kierros = ky
		else:
			kierros = kx
		
		if (x==n-kierros):
			summa = 2*(n-kierros*2)-1+(n-y-kierros)
		else:
			summa = 3*(n-kierros*2) -2 + (n-x-kierros)

	if (kierros > 0):
		summa += int((kierros) * ((4+8*((puolet)-(kierros))) + (4+8*((puolet)-1))) / 2)
	
	print(int(summa))

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
571375684522141210
967321186816598633
762879105851175000
370065046779516794
936897883750373787
...