Submission #1225506

#TimeUsernameProblemLanguageResultExecution timeMemory
1225506mariaclaraSoccer Stadium (IOI23_soccer)C++20
0 / 100
0 ms328 KiB
#include "soccer.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,int> pli;
typedef vector<int> vi;
typedef vector<ll> vl;
#define all(x) x.begin(), x.end()
#define sz(x) (int)x.size()
#define pb push_back
#define mk make_pair
#define fr first
#define sc second

int biggest_stadium(int N, vector<vi> F) {
    int empty_cells = 0;
    vi L(N,N+1), R(N,-1);
    int M = 0, s = -1, e = -1;

    for(int i = 0; i < N; i++) {
        for(int j = 0; j < N; j++){
            if(F[i][j]) continue;
            empty_cells++;
            L[i] = min(L[i], j);
            R[i] = j;
        }
        if(L[i] < L[M]) M = i;
        if(L[i] == L[M] and R[i] > R[M]) M = i;
        if(s == -1 and R[i] != -1) s = i;
        if(R[i] != -1) e = i;
    }

    vector<pii> a;

    for(int i = s; i < M; i++) {
        if(L[i] < L[i+1]) return 0;
        if(R[i] > R[i+1]) return 0;
        a.pb({L[i], -R[i]});
    }

    for(int i = M+1; i < e; i++) {
        if(L[i-1] > L[i]) return 0;
        if(R[i-1] > R[i]) return 0;
        a.pb({L[i], -R[i]});
    }

    sort(all(a));

    for(int i = 0; i < sz(a); i++) a[i].sc *= -1;

    for(int i = 0; i+1 < sz(a); i++) {
        if(a[i].sc < a[i+1].sc) return 0;
    }

    return empty_cells;
}
/*
4
1 1 1 0
0 0 0 0
1 1 1 0
1 1 1 0
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...