CSES - Datatähti 2022 alku - Results
 Task: Spiraali (Spiral) Sender: Bliz Submission time: 2021-10-05 20:36:39 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 <iostream>
#include <cmath>

using namespace std;

struct Point
{
int x, y;
};

void get_input(Point points[], int t)
{
int x, y;
for (int i = 0; i < t; i++)
{
cin >> y >> x;
points[i] = Point{x, y};
}
}

long long segment(int l, int c, int x, int y)
{
return l * l + (c * (l + 1) - 1) + x + y;
}

long long get_result(int n, Point point)
{
int m = (n >> 1); // n / 2
int x = point.x, y = point.y;

int l;       // Kerroksen sisäpuolelle jäävän palikan halkaisija
long long r; // vastaus = n^2 - r;
// r on ruudun numero, jos spiraali alkaisi keskeltä 0:lla.
if (y <= m)
{
if (x <= m)
{
if (x > y)
{
l = 2 * (m - y);
r = segment(l, 0, x, -y);
}
else
{
l = 2 * (m - x);
r = segment(l, 4, -y, x);
}
}
else
{
if (n - x >= y)
{
l = 2 * (m - y);
r = segment(l, 0, x, -y);
}
else
{
l = 2 * (x - m - 1);
r = segment(l, 2, y, -x);
}
}
}
else
{
if (x > m)
{
if (x < y)
{
l = 2 * (y - m - 1);
r = segment(l, 2, -x, y);
}
else
{
l = 2 * (x - m - 1);
r = segment(l, 2, y, -x);
}
}
else
{
if (x > n - y)
{
l = 2 * (y - m - 1);
r = segment(l, 2, -x, y);
}
else
{
l = 2 * (m - x);
r = segment(l, 4, -y, x);
}
}
}
return n * n - r;
}

void get_results(long long results[], int n, Point points[], int t)
{
for (int i = 0; i < t; i++)
results[i] = get_result(n, points[i]);
}

void print_results(long long results[], int t)
{
for (int i = 0; i < t; i++)
cout << results[i] << "\n";
cout << "Done\n";
}

int main()
{
int n, t;
cin >> n >> t;
Point points[t];
get_input(points, t);
long long results[t];
get_results(results, n, points, t);
print_results(results, t);
}
```

### Test details

Group: 1

Verdict:

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

Group: 2

Verdict:

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
-2596477414
-1947622871
-3240906664
152360822
-2956879477
...