CSES - Datatähti 2022 alku - Results
Submission details
Task:Spiraali (Spiral)
Sender:Emunemu
Submission time:2021-10-05 18:22:49
Language:C++17
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED15
#2ACCEPTED20
#3ACCEPTED65
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1details
#2ACCEPTED0.01 s2details
#3ACCEPTED0.01 s3details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:106:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (ll i = 0; i < v.size();i++) {
                    ~~^~~~~~~~~~

Code

#include <stdio.h>
#include <iostream>
#include <vector>

using namespace std;
typedef long long ll;

bool Uloimmalla(int x, int y, int nt) {
    if (x == 1 || y == 1 ||x==nt||y==nt) {
        return true;
    }
    return false;
}

ll Kerros(ll x, ll y, ll nt) {
    if (x > nt/2.0) {
        x = nt - x + 1;
    } else {
        x = 0 + x;
    }
    if (y > nt/2.0) {
        y = nt - y + 1;
    } else {
        y = 0 + y;
    }
    
    if (x>y) {
        return y;
    } else {
        return x;
    }
    
}

int main()
{
    ll n,nt,t,x,y;
    cin >> n >> t;
    vector<ll> v;
    for (ll i = 0; i < t;i++) {
        cin >> y >> x;
        nt = n;
        
        ll perus;
        ll tulo;
        ll kerrottava;
        ll ans;
        
        
        ll kerros = Kerros(x,y,nt);
        tulo = n - (kerros-1);
        kerrottava = 4 * (kerros-1);
        perus = tulo * kerrottava;
        nt -= 2*(kerros-1);
        x -= kerros-1;
        y -= kerros-1;
        ll tulo2 = n - kerros;
        ll kerrottava2 = 4 * kerros;
        ll perus2 = tulo2 * kerrottava2;
        if (x==1) {
            ans = perus + y;
        } else if (y==nt) {
            ans = perus + nt + (x-1);
        } else if (y==1) {
            ans = perus2 - x + 2;
        } else if (x==nt) {
        ans = perus2 - nt + 2 - y + 1;
        }
        v.push_back(ans);
        x = 0;
        y = 0;
        
        
            
        /*while(true) {
            if (Uloimmalla(x,y,nt)) {
                if (x==1) {
                    ans = perus + y;
                } else if (y==nt) {
                    ans = perus + nt + (x-1);
                } else if (y==1) {
                    ans = (tulo * kerrottava) - x + 2;
                } else if (x==nt) {
                    ans = (tulo * kerrottava) - nt + 2 - y + 1;
                }
            }
            if (ans != 0) {
                v.push_back(ans);
                x = 0;
                y = 0;
                nt = n;
                break;
            }
            perus = tulo * kerrottava;
            tulo -= 1;
            kerrottava += 4;
            nt -= 2;
            y -= 1;
            x -= 1;
        }*/
        
        
    }
    
    for (ll i = 0; i < v.size();i++) {
        cout << v[i] << "\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
...