This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
bool limites(int N, int i, int j){
return i>=0&&i<N&&j>=0&&j<N;
}
int biggest_stadium(int N, vector<vector<int>> F){
int empty_cells=0;
bool posible=true;
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
pair<int,int>libre;
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(F[i][j]==0){
empty_cells++;
libre={i,j};
}
else{
int grado=0;
for(int ii=0;ii<4;ii++){
if(limites(N,i+dx[ii],j+dy[ii])){
if(F[i+dx[ii]][j+dy[ii]]==0){
grado++;
}
}
}
if(grado==3){
posible=false;
}
}
}
}
queue<pair<int,int>>cola;
vector<vector<bool>>v(N,vector<bool>(N));
v[libre.first][libre.second]=true;
cola.push(libre);
while(!cola.empty()){
auto[i,j]=cola.front();
cola.pop();
for(int ii=0;ii<4;ii++){
if(limites(N,i+dx[ii],j+dy[ii])){
if(F[i+dx[ii]][j+dy[ii]]==0&&!v[i+dx[ii]][j+dy[ii]]){
v[i+dx[ii]][j+dy[ii]]=true;
cola.push({i+dx[ii],j+dy[ii]});
}
}
}
}
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(F[i][j]==0&&!v[i][j]){
posible=false;
}
}
}
return posible==true?empty_cells:1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |