CSES - Datatähti 2022 alku - Results
Submission details
Task:Spiraali
Sender:tassu
Submission time:2021-10-05 20:08:19 +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 DIR_UP 0
#define DIR_DOWN 1
#define DIR_LEFT 2
#define DIR_RIGHT 3

using namespace std;

int main() {
    int size, count;

    cin >> size >> count;
    int spiral[size][size];

    int x = 0, y = 0, layer = 0;
    int dir = DIR_DOWN;
    for (int i = 0; i < pow(size, 2); i++) {
        spiral[x][y] = i + 1;

        switch (dir) {
            case DIR_UP:
                if (y == layer) {
                    x -= 1;
                    dir = DIR_LEFT;
                } else {
                    y -= 1;
                }
                break;
            case DIR_DOWN:
                if (y == size - layer - 1) {
                    x += 1;
                    dir = DIR_RIGHT;
                } else {
                    y += 1;
                }
                break;
            case DIR_LEFT:
                if (x == layer + 1) {
                    y += 1;
                    layer += 1;
                    dir = DIR_DOWN;
                } else {
                    x -= 1;
                }
                break;
            case DIR_RIGHT:
                if (x == size - layer - 1) {
                    y -= 1;
                    dir = DIR_UP;
                } else {
                    x += 1;
                }
                break;
        }
    }

    /*
    for (y = 0; y < size; y++) {
        for (x = 0; x < size; x++) {
            cout << spiral[x][y] << " ";
        }
        cout << endl;
    }
     */

    for (int j = 0; j < count; j++) {
        cin >> x >> y;
        cout << spiral[y - 1][x - 1] << endl;
    }

    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)