Submission #1033868

# Submission time Handle Problem Language Result Execution time Memory
1033868 2024-07-25T07:13:42 Z 김은성(#10970) Tiles (BOI24_tiles) C++17
4 / 100
27 ms 5460 KB
#define x first
#define y second
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[1009][1009];
bool impos[1009];
ll ccw(pair<ll, ll> p, pair<ll, ll> q, pair<ll, ll> r){
    return (q.x-p.x)*(r.y-p.y) + (r.x-p.x)*(q.y-p.y);
}
int main(){
    int n, xm, ym = 1000, i, j;
    scanf("%d %d", &n, &xm);
    vector<pair<int, int> > p(n);
    for(i=0; i<n; i++)
        scanf("%d %d", &p[i].x, &p[i].y);
    if((abs(p[0].y-p[1].y) + abs(p[1].y-p[2].y))%2==0)
        printf("%d\n", min(p[0].x, min(p[1].x, p[2].x)) + (xm - min(p[0].x, min(p[1].x, p[2].x)))/2*2);
    else
        printf("0\n");
        return 0;
    for(i=0; i<n; i++){
        if(ccw(p[i], p[(i+1)%n], p[(i+2)%n]) < 0){
            for(i=0; i<n/2; i++)
                swap(p[i], p[n-1-i]);
            break;
        }
    }
    for(i=0; i<n; i++){
        int x1 = p[i].first, y1 = p[i].second;
        int x2 = p[(i+1)%n].first, y2 = p[(i+1)%n].second;
        if(y1 == y2){
            if(x1 < x2){
                for(j=x1; j<x2; j++)
                    a[j][y1]--;
            }
            else{
                for(j=x1-1; j>=x2; j--)
                    a[j][y2]++;
            }
        }
    }
    for(i=0; i<=xm; i++){
        for(j=0; j<=ym; j++){
            a[i][j] += (j==0 ? 0 : a[i][j-1]);
            //printf("%d", a[i][j]);
        }
        //printf("\n");
    }
    bool flag = 0;
    for(i=0; i<=xm; i++){
        int cur = 0;
        for(j=0; j<=ym; j++){
            if(!a[i][j]){
                if(cur%2 == 1){
                    flag = 1;
                    break;
                }
                cur = 0;
            }
            else
                cur++;
        }
        if(flag)
            impos[i] = 1;
    }
    for(i=0; i<=ym; i++){
        int cur = 0;
        bool flag = 0;
        for(j=0; j<=xm; j++){
            if(!a[j][i]){
                if(cur%2==1)
                    flag = 1;
                cur = 0;
            }
            else
                cur++;
            if(flag || cur%2)
                impos[j] = 1;
        }
    }
    int opt = 0;
    for(i=0; i<xm; i++){
        if(!impos[i])
            opt = i+1;
    }
    printf("%d\n", opt);
    return 0;
}

Compilation message

Main.cpp: In function 'int main()':
Main.cpp:19:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
   19 |     else
      |     ^~~~
Main.cpp:21:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else'
   21 |         return 0;
      |         ^~~~~~
Main.cpp:13:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |     scanf("%d %d", &n, &xm);
      |     ~~~~~^~~~~~~~~~~~~~~~~~
Main.cpp:16:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |         scanf("%d %d", &p[i].x, &p[i].y);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 344 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 344 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 0 ms 344 KB Output is correct
13 Correct 0 ms 344 KB Output is correct
14 Incorrect 0 ms 348 KB Output isn't correct
15 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 0 ms 344 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 Correct 14 ms 3164 KB Output is correct
3 Incorrect 14 ms 3148 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 27 ms 5460 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 344 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 0 ms 344 KB Output is correct
13 Correct 0 ms 344 KB Output is correct
14 Incorrect 0 ms 348 KB Output isn't correct
15 Halted 0 ms 0 KB -