CSES - Datatähti 2022 alku - Results
Submission details
Task:Spiraali
Sender:EeliH
Submission time:2021-10-04 19:46:38 +0300
Language:C++11
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.01 s1details
#20.01 s2details
#30.01 s3details

Code

#include <cmath>
#include <iostream>

using namespace std;

int get_layer(int x, int y) {
    return max(abs(x), abs(y));
}

int get_offset(int x, int y) {
    int layer = get_layer(x, y);
    int offset = 4 * layer * layer - 4 * layer + 1;
    return offset;
}

int get_strip_i(int x, int y) {
    int layer = get_layer(x, y);
    int width = 2 * layer + 1;
    int hwidth = layer + 1;
    if(x == layer) {
        return (3 * width - 3) + (hwidth - y) - 2;
    } else if(y == -layer) {
        return layer - x - 1;
    } else if(x == -layer) {
        return (width - 1) + y + 1;
    } else if(y == layer) {
        return (2 * width - 2) + x + hwidth - 1;
    }
    return 1234;
}

int main()
{
    int n, t;
    cin >> n >> t;
    //cout << get_offset(x, y) + get_strip_i(x, y) << endl;
    //cout << get_offset(x, y) << endl;
    //cout << get_strip_i(x, y) << endl;
    
    for(int i = 0; i < t; i++) {
        int x, y;
        cin >> y >> x;

        // Koordinaatit alkamaan (0,0)
        x--;
        y--;
    
        int nx, ny;
        nx = (int) (n / 2);
        ny = (int) ((n - 1) / 2);
    
        x = x - nx;
        y = ny - y;

        int arvo = n * n - (get_offset(x, y) + get_strip_i(x, y));
        //cout << "A " << get_strip_i(x, y) << endl;
        //cout << "B " << get_offset(x, y) << endl;
        cout << arvo << endl;
        //cout << x << " " << y << endl;
    }
}

Test details

Test 1

Group: 1

Verdict:

input
10 100
1 1
1 2
1 3
1 4
...

correct output
1
36
35
34
33
...

user output
4
38
34
33
32
...

Test 2

Group: 2

Verdict:

input
1000 1000
371 263
915 322
946 880
53 738
...

correct output
773533
312166
206053
200080
593922
...

user output
773769
312166
206053
200079
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
1698489882
-1947622872
1297535934
152360822
1338087818
...