CSES - Datatähti 2022 alku - Results
Submission details
Task:Spiraali
Sender:eetul
Submission time:2021-10-17 20:04:51
Language:C++11
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED15
#2ACCEPTED20
#3ACCEPTED65
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1details
#2ACCEPTED0.01 s2details
#3ACCEPTED0.01 s3details

Code

#include <bits/stdc++.h>

#define MIN(X, Y) (((X) <  (Y)) ? (X) : (Y))
#define MAX(X, Y) (((X) >= (Y)) ? (X) : (Y))

using namespace std;

/*int s(int n) {
	return n + 2*(n-1) + (n-2);
}*/

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int n, t, y, x;
	cin >> n >> t;

	while (t--) {
		cin >> y >> x;
		long int r = 1;
		long int cy = 1;
		long int cx = 1;
		long int least = MIN(MIN(x, y), MIN(n + 1 - x, n + 1 - y));
		if (least > 1) {
			/*for (int i = 1; i < least; i++) {
				//r += s(n - 2*(i - 1));
				r += 4*n - 8*i + 4;
			}*/
			r = (least - 1) * 4 * (n + 1 - least) + 1;
			cx = least;
			cy = least;
		}
		if (cx == x) {
			r += (y - cy);
			goto quit;
		}
		else {
			cy += (n - 2*(least - 1) - 1);
			r += (n - 2*(least - 1) - 1);
		}
		if (cy == y) {
			r += (x - cx);
			goto quit;
		}
		else {
			cx += (n - 2*(least - 1) - 1);
			r += (n - 2*(least - 1) - 1);
		}
		if (cx == x) {
			r += (cy - y);
			goto quit;
		}
		else {
			cy -= (n - 2*(least - 1) - 1);
			r += (n - 2*(least - 1) - 1);
		}
		if (cy == y) {
			r += (cx - x);
			goto quit;
		}
		else {
			cx -= (n - 2*(least - 1) - 1);
			r += (n - 2*(least - 1) - 1);
		}
		quit:
		cout << r << "\n";
	}

	return 0;
}

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: ACCEPTED

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

correct output
571375684522141210
967321186816598569
762879105851175000
370065046779516790
936897883750373771
...

user output
571375684522141210
967321186816598569
762879105851175000
370065046779516790
936897883750373771
...