제출 #839854

#제출 시각아이디문제언어결과실행 시간메모리
839854YongaronSoccer Stadium (IOI23_soccer)C++17
1.50 / 100
298 ms32332 KiB
#include "soccer.h" #include <bits/stdc++.h> using namespace std; int biggest_stadium(int N, vector<vector<int>> F) { bool good = true; for (int i = 0; i < N && good; i++) { bool seen0 = false; bool seen1 = false; for(int j = 0; j < N; j++) { if (seen1 && !F[i][j]) { good = false; break; } if (seen0 && F[i][j]) { seen1 = true; } if(!F[i][j]) { seen0 = true; } } } for(int j = 0; j < N && good; j++) { bool seen0 = false; bool seen1 = false; for(int i = 0; i < N; i++) { if (seen1 && !F[i][j]) { good = false; break; } if (seen0 && F[i][j]) { seen1 = true; } if(!F[i][j]) { seen0 = true; } } } vector<vector<bool>> visited(N, vector<bool>(N, false)); queue<pair<int, int>> q; int vis = 0; for(int i = 0; i < N && q.empty(); i++) { for(int j = 0; j < N && q.empty(); j++) { if(!F[i][j]) { q.push({i, j}); visited[i][j] = true; vis = 1; } } } vector<int> dx = {0, 0, 1, -1}; vector<int> dy = {1, -1, 0, 0}; while(!q.empty()) { auto [i, j] = q.front(); q.pop(); for (int k = 0; k < 4; k++) { int ni = i + dx[k]; int nj = j + dy[k]; if (ni < 0 || ni >= N || nj < 0 || nj >= N || visited[ni][nj] || F[ni][nj]) continue; visited[ni][nj] = true; vis++; q.push({ni, nj}); } } int empty = 0; for(int i = 0; i < N; i++) { for(int j = 0; j < N; j++) { if(!F[i][j]) empty++; } } if (vis != empty) good = false; if (good) return empty; else return 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...