Submission #840849

#TimeUsernameProblemLanguageResultExecution timeMemory
840849Lucpp축구 경기장 (IOI23_soccer)C++17
1.50 / 100
248 ms31692 KiB
#include <bits/stdc++.h> #include "soccer.h" using namespace std; using pii = pair<int, int>; constexpr pii id = {-1, -1}; bool inside(pii a, pii b){ if(a.first == -1) return true; if(b.first == -1) return false; return b.first <= a.first && a.second <= b.second; } int biggest_stadium(int N, vector<vector<int>> F){ vector<pii> v(N); int flag = 0; int start = 0; for(int i = 0; i < N; i++){ int l = -1, r = -1; for(int j = 0; j < N; j++){ if(F[i][j] == 0){ if(l == -1) l = j; r = j; } } for(int j = l; j < r+1; j++){ if(F[i][j]) return 0; } v[i] = {l, r}; if(flag == 0 && l != -1) flag = 1; if(flag == 1 && l == -1) flag = 2; if(flag == 2 && l != -1) return 0; if(inside(v[start], v[i])) start = i; } int lo = start, hi = start; while(true){ pii le = (lo >= 0 ? v[lo] : id); pii ri = (hi < N ? v[hi] : id); if(le == id && ri == id) break; if(inside(le, ri)) hi++; else if(inside(ri, le)) lo--; else return 0; } int cnt = 0; for(int i = 0; i < N; i++) for(int j = 0; j < N; j++) cnt += F[i][j]^1; return cnt; }
#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...