CSES - Datatähti 2022 alku - Results
Submission details
Task:Spiraali
Sender:ToukoP
Submission time:2021-10-05 15:03:32 +0300
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 <iostream>
using namespace std;

long layer(long n, long x, long y) {
    return min(min(x, n - x - 1), min(y, n - y - 1));
}

long sideLength(long n, long l) {
    return n - l * 2;
}

long solve(long n, long x, long y) {

    long l = layer(n, x, y);
    long s = sideLength(n, l);
    long outside = n*n - s*s;
    s--;

    long result = -2;
    if (x == l && y >= l && y < l + s) {
        result = outside +(y - l) +1;
    } else if (y == l) {
        result = outside -(x - l) +4*s +1;
    } else if (n - x - 1 == l) {
        result = outside -(y - l) +3*s +1;
    } else if (n - y - 1 == l) {
        result = outside +(x - l) +1*s +1;
    }

    return result;
}

int main6() {
    long n = 10;
    for (long y = 0; y < n; y++) {
        for (long x = 0; x < n; x++) {
            cout << "  " << solve(n, x, y);
        }
        cout << "\n";
    }
    return 0;
}

int main() {
    long n, t;
    cin >> n >> t;
    long input [t][2];

    for (int i = 0; i < t; i++) {
        cin >> input[i][1] >> input[i][0];
    }

    for (int i = 0; i < t; i++) {
        cout << solve(n, input[i][0] - 1, input[i][1] - 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: 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
...