CSES - DatatÃ¤hti 2022 alku - Results
 Task: Spiraali Sender: EeliH Submission time: 2021-10-04 20:26:05 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 <cmath>
#include <iostream>

using namespace std;

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

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

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

int main()
{
int64_t 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(int64_t i = 0; i < t; i++) {
int64_t x, y;
cin >> y >> x;

// Koordinaatit alkamaan (0,0)
x--;
y--;

int64_t nx, ny;
nx = (int64_t) (n / 2);
ny = (int64_t) ((n - 1) / 2);

x = x - nx;
y = ny - y;

int64_t 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;
}

//cout << "AAAA" << endl;
//cout << get_strip_i(0, -1) << endl;
//cout << get_strip_i(-1, -1) << endl;
//cout << get_strip_i(-1, 0) << endl;
//cout << get_strip_i(-1, 1) << endl;
//cout << get_strip_i(0, 1) << endl;
//cout << get_strip_i(1, 1) << endl;
//cout << get_strip_i(1, 0) << endl;
//cout << get_strip_i(1, -1) << endl;

//cout << "AAAA" << endl;
//cout << get_strip_i(1, -2) << endl;
//cout << get_strip_i(0, -2) << endl;
//cout << get_strip_i(-1, -2) << endl;
//cout << get_strip_i(-2, -2) << endl;
//cout << get_strip_i(-2, -1) << endl;
//cout << get_strip_i(-2, 0) << endl;
//cout << get_strip_i(-2, 1) << endl;
//cout << get_strip_i(-2, 2) << endl;
//cout << get_strip_i(-1, 2) << endl;
//cout << get_strip_i(0, 2) << endl;
//cout << get_strip_i(1, 2) << endl;
//cout << get_strip_i(2, 2) << endl;
//cout << get_strip_i(2, 1) << endl;
//cout << get_strip_i(2, 0) << endl;
//cout << get_strip_i(2, -1) << endl;
//cout << get_strip_i(2, -2) << endl;
}
```

### 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
...