CSES - Datatähti 2022 alku - Results
Submission details
Task:Spiraali
Sender:eetul
Submission time:2021-10-06 17:10:51 +0300
Language:C++11
Status:READY
Result:35
Feedback
groupverdictscore
#1ACCEPTED15
#2ACCEPTED20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1details
#2ACCEPTED0.01 s2details
#30.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 main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int n, t;
	cin >> n >> t;

	int s[n][n];

	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)
			s[i][j] = 0;

	int y = 0;
	int x = 0;
	int g = n*n;
	int d = 1;

	for (int i = 1; i <= g; i++) {
		s[y][x] = i;
		switch (d)
		{
		// down
		case 1:
			if (y+1 >= n || s[y+1][x] != 0) {
				x++;
				d = 2;
			}
			else
				y++;
			break;
		// right
		case 2:
			if (x+1 >= n || s[y][x+1] != 0) {
				y--;
				d = 3;
			}
			else
				x++;
			break;
		// up
		case 3:
			if (y-1 < 0 || s[y-1][x] != 0) {
				x--;
				d = 4;
			}
			else
				y--;
			break;
		// left
		case 4:
			if (x-1 < 0 || s[y][x-1] != 0) {
				y++;
				d = 1;
			}
			else
				x--;
			break;
		default:
			break;
		}
	}

	while (t--) {
		cin >> y >> x;
		cout << s[y-1][x-1] << "\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:

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

correct output
571375684522141210
967321186816598569
762879105851175000
370065046779516790
936897883750373771
...

user output
(empty)