#include "soccer.h"
#include <bits/stdc++.h>
using namespace std;
int test(int N, vector <vector <int> > F){
int lmt=-1, rmt=-1, umt=-1, dmt=-1;
vector <int> ums, dms, rms, lms;
ums.assign(N, -1);
dms.assign(N, -1);
rms.assign(N, -1);
lms.assign(N, -1);
for(int i=0; i<N; ++i){
for(int j=0; j<N; ++j){
if(F[i][j]){
if(i>0){
if(!F[i-1][j] && umt==-1){
umt=i;
}
}
if(j>0){
if(!F[i][j-1] && (lmt==-1 || lmt>j)){
lmt=j;
}
}
if(i<N-1){
if(!F[i+1][j]){
dmt=i;
}
}
if(j<N-1){
if(!F[i][j+1] && rmt<j){
rmt=j;
}
}
}
else{
if(ums[j]==-1){
ums[j]=i;
}
if(lms[i]==-1){
lms[i]=j;
}
rms[i]=j;
dms[j]=i;
}
}
}
if((umt<=dmt+1 && (umt!=-1 && dmt!=-1)) || (lmt<=rmt+1 && (lmt!=-1 && rmt!=-1))){
return 0;
}
for(int i=0; i<N; ++i){
if(ums[i]!=-1){
for(int j=0; j<N; ++j){
if(dms[j]!=-1){
if(F[ums[i]][j] && F[dms[j]][i]){
return 0;
}
}
}
}
}
for(int i=0; i<N; ++i){
if(lms[i]!=-1){
for(int j=0; j<N; ++j){
if(rms[j]!=-1){
if(F[j][lms[i]] && F[i][rms[j]]){
return 0;
}
}
}
}
}
vector <bool> bsc;
for(int i=0; i<N; ++i){
for(int j=0; j<N; ++j){
if(!F[i][j]){
bsc.push_back(0);
}
}
}
int aux=bsc.size();
return aux;
}
int biggest_stadium(int N, vector <vector <int> > F)
{
int nosirvo=test(N, F);
if(nosirvo>0){
return nosirvo;
}
if(N>3){
return 0;
}
int tc=0;
int x=-1;
int y=-1;
for(int i=0; i<N; ++i){
for(int j=0; j<N; ++j){
if(F[i][j]){
++tc;
x=i;
y=j;
}
}
}
if(tc==0){
return N*N;
}
if(tc==1){
if(x>N-x-1){
x=N-x-1;
}
if(y>N-y-1){
y=N-y-1;
}
return N*N-(x+1)*(y+1);
}
if(tc==N*N-1){
return 1;
}
vector <vector <int> > Q;
vector <int> nose;
nose.push_back(1);
Q.push_back(nose);
if(!F[0][0]){
nose[0]=1;
Q.push_back(nose);
}
for(int i=0; i<N; ++i){
for(int j=0; j<N; ++j){
if(j>0 || i>0){
int k=Q.size();
if(!F[i][j]){
for(int l=0; l<k; ++l){
Q.push_back(Q[l]);
Q[Q.size()-1].push_back(1);
}
}
for(int l=0; l<k; ++l){
Q[l].push_back(F[i][j]);
}
}
}
}
vector <vector <vector <int> > > TQ;
TQ.resize(Q.size());
for(unsigned int i=0; i<Q.size(); ++i){
TQ[i].assign(N, vector <int>(N, 0));
for(int j=0; j<N*N; ++j){
TQ[i][j/N][j%N]=Q[i][j];
}
}
int mx=0;
for(unsigned int i=0; i<TQ.size(); ++i){
int aux;
aux=test(N, TQ[i]);
if(aux>mx){
mx=aux;
}
}
return mx;
}
# | 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... |