Submission #1242340

#TimeUsernameProblemLanguageResultExecution timeMemory
1242340Hamed_GhaffariSoccer Stadium (IOI23_soccer)C++20
6 / 100
192 ms31784 KiB
#include "soccer.h" #include <bits/stdc++.h> using namespace std; const int MXN = 2003; bool vis[MXN][MXN]; int n, dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1}; void dfs(int x, int y, vector<vector<int>> &F){ vis[x][y] = 1; for(int d=0,xx,yy; d<4; d++) { xx = x+dx[d], yy = y+dy[d]; if(0<=xx && xx<n && 0<=yy && yy<n && !vis[xx][yy] && F[xx][yy]==0) dfs(xx, yy, F); } } int biggest_stadium(int n, vector<vector<int>> F) { ::n = n; int cnt=0; for(int i=0; i<n; i++) for(int j : F[i]) cnt += j; if(cnt==0) return n*n; if(cnt==1) { int x=-1, y=-1; for(int i=0; i<n; i++) for(int j=0; j<n; j++) if(F[i][j]) x=i, y=j; return n*n - min(x+1, n-x)*min(y+1, n-y); } for(int i=0; i<n; i++) for(int j=0; j<n; j++) if(F[i][j]==0) dfs(i, j, F); for(int i=0; i<n; i++) for(int j=0; j<n; j++) if(F[i][j]==0 && !vis[i][j]) return 0; int lstl=-1, lstr=-1; bool p1=1; 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; } if(l!=-1) { for(int j=l; j<=r; j++) if(F[i][j]==1) return 0; if(lstl==-1) { lstl = l; lstr = r; } else if(p1) { if(l<=lstl && lstr<=r); else if(lstl<=l && r<=lstr) p1=0; else return 0; } else if(lstl<=l && r<=lstr); else return 0; lstl = l; lstr = r; } } return n*n-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...