Submission #1079052

# Submission time Handle Problem Language Result Execution time Memory
1079052 2024-08-28T10:03:47 Z oscar1f Tiles (BOI24_tiles) C++17
0 / 100
29 ms 10660 KB
#include<bits/stdc++.h>
using namespace std;

#define int long long

const int INFINI=1000*1000*1000+5,TAILLE_MAX=200*1000+5;
int nbPoints,maxX;
pair<int,int> initPoint[TAILLE_MAX];
pair<int,int> points[TAILLE_MAX];

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin>>nbPoints>>maxX;
    int xNouv,yNouv,posMin=0,xMin=INFINI,yMin=INFINI;
    for (int i=0;i<nbPoints;i++) {
        cin>>xNouv>>yNouv;
        if (xNouv<xMin or (xNouv==xMin and yNouv<yMin)) {
            posMin=i;
            xMin=xNouv;
            yMin=yNouv;
        }
        initPoint[i]={xNouv,yNouv};
    }
    int posCour,direc=-1,nbPris=1;
    points[0]={xMin,yMin};
    for (int i=1;i<=nbPoints;i++) {
        //cout<<direc<<" "<<nbPris<<endl;
        posCour=(posMin+i)%nbPoints;
        if (points[nbPris-1].first==initPoint[posCour].first) {
            if (direc==0) {
                points[nbPris-1].second=initPoint[posCour].second;
                //cout<<0<<" "<<initPoint[posCour].first<<" "<<initPoint[posCour].second<<endl;
            }
            else {
                direc=0;
                points[nbPris]=initPoint[posCour];
                nbPris++;
            }
        }
        else {
            if (direc==1) {
                //cout<<1<<" "<<initPoint[posCour].first<<" "<<initPoint[posCour].second<<endl;
                points[nbPris-1].first=initPoint[posCour].first;
            }
            else {
                direc=1;
                points[nbPris]=initPoint[posCour];
                nbPris++;
            }
        }
    }
    nbPoints=nbPris;
    if (direc==1) {
        for (int i=0;i<nbPoints/2;i++) {
            swap(points[i],points[nbPoints-1-i]);
        }
    }
    for (int i=1;i<nbPoints;i++) {
        if (points[i].second%2!=yMin%2) {
            cout<<points[i-1].first<<endl;
            return 0;
        }
        if (points[i].first%2!=xMin%2) {
            cout<<points[i].first-1<<endl;
            return 0;
        }
    }
    cout<<maxX<<endl;
    /*for (int i=0;i<nbPoints;i++) {
        cout<<points[i].first<<" "<<points[i].second<<endl;
    }
    if (points[0].second%2==points[2].second%2) {
        if (points[0].first%2==points[2].first%2) {
            cout<<points[2].first<<endl;
        }
        else {
            cout<<points[2].first-1<<endl;
        }
    }
    else {
        cout<<xMin<<endl;
    }*/
    return 0;
}
 
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Incorrect 0 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 14 ms 5492 KB Output is correct
3 Correct 14 ms 5468 KB Output is correct
4 Correct 21 ms 8024 KB Output is correct
5 Correct 21 ms 8028 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 27 ms 10320 KB Output is correct
9 Correct 28 ms 10324 KB Output is correct
10 Correct 28 ms 10196 KB Output is correct
11 Correct 28 ms 10324 KB Output is correct
12 Correct 29 ms 10128 KB Output is correct
13 Incorrect 28 ms 10660 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 27 ms 10072 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -