제출 #841152

#제출 시각아이디문제언어결과실행 시간메모리
841152Gurban축구 경기장 (IOI23_soccer)C++17
1.50 / 100
267 ms34068 KiB
#include "soccer.h"
#include <bits/stdc++.h>
using namespace std;

int biggest_stadium(int N, std::vector<std::vector<int>> F)
{
    vector<vector<bool>>up(N,vector<bool>(N,0));
    vector<vector<bool>>dw(N,vector<bool>(N,0));
    vector<vector<bool>>lf(N,vector<bool>(N,0));
    vector<vector<bool>>rg(N,vector<bool>(N,0));
    int ans = 0;
    for(int i = 0;i < N;i++){
        for(int j = 0;j < N;j++){
            if(!F[i][j]){
                up[i][j] = lf[i][j] = 1;
                ans++;
            }
            else {
                if(i > 0) up[i][j] = up[i-1][j];
                if(j > 0) lf[i][j] = lf[i][j-1];
            }
        }
    }

    for(int i = N-1;i >= 0;i--){
        for(int j = N-1;j >= 0;j--){
            if(!F[i][j]) dw[i][j] = rg[i][j] = 1;
            else {
                if(i < N-1) dw[i][j] = dw[i + 1][j];
                if(j < N-1) rg[i][j] = rg[i][j + 1];
            }
        }
    }

    for(int i = 0;i < N;i++){
        for(int j = 0;j < N;j++){
            if(F[i][j] == 1){
                if(lf[i][j] and rg[i][j]) return -1;
                if(up[i][j] and dw[i][j]) return -1;
            }
        }
    }

    return ans;
}
#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...