제출 #1225194

#제출 시각아이디문제언어결과실행 시간메모리
1225194amine_aroua축구 경기장 (IOI23_soccer)C++20
1.50 / 100
516 ms298696 KiB
#include "soccer.h" #include<bits/stdc++.h> using namespace std; int cnt = 0; int xx [] = {-1 , 1 , 0 , 0}; int yy[] = {0 , 0 , -1 , 1}; vector<vector<bool>> vis; vector<vector<int>> grid; void dfs(int x , int y) { if(vis[x][y]) return ; vis[x][y] = 1; cnt++; for(int k = 0 ; k < 4 ; k++) { int nx = x + xx[k] , ny = y + yy[k]; if(grid[nx][ny] == 0) dfs(nx , ny); } } int biggest_stadium(int N, std::vector<std::vector<int>> F) { cnt = 0; vis.assign(N + 2 ,vector<bool>(N + 2 , 1)); grid.assign(N + 2 ,vector<int> (N + 2 , 1)); int ret = 0; for(int i= 1 ; i <= N ; i++) { for(int j = 1 ; j <= N ; j++) { grid[i][j] = F[i-1][j-1]; vis[i][j] = 0; ret+=(grid[i][j]^1); } } bool check = true; for(int i = 1 ; i <= N ; i++) { int ans = 0; for(int j = 1 ;j <= N+ 1 ; j++) { ans+=(grid[i][j] != grid[i][j - 1]); } if(ans != 2 && ans!= 0) { check = false; break; } } for(int j = 1 ; j <= N ; j++) { int ans = 0; for(int i = 1 ;i <= N + 1 ; i++) { ans+= (grid[i - 1][j] != grid[i][j]); } if(ans != 2 && ans != 0) { check = false; break; } } for(int i = 1 ; i <= N ; i++) { for(int j = 1 ; j <= N ; j++) { if(grid[i][j] == 0) { dfs(i , j); i = N + 1; break; } } } if(check == false || cnt != ret) ret = 0; return ret; }
#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...