| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 844404 | Lib | 축구 경기장 (IOI23_soccer) | C++17 | 0 ms | 0 KiB |
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 "soccer.h"
#include <bits/stdc++.h>
int val[503][503];
int cntop[503];
int cnbot[503];
int biggest_stadium(int N, std::vector<std::vector<int>> C)
{
int X = -1, Y = -1;
bool run = true;
int n=N+1;
for(int i=0;i<=n+1;i++){
for(int k=0;k<=n+1;k++){
val[i][k]=1;
}
}
for (int i = 0; i < N && run; ++i)
{
for (int j = 0; j < N && run; ++j)
{
val[i+1][j+1]=C[i][j];
}
}
int p1,p2;
int ans=0;
int carea;
int mtop,mbot;
for(int i=1;i<=n;i++){
for(int k=1;k<=n;k++){
for(int l=0;i-l>=0;l++){
if(val[i-l][k]){
cntop[k]=l;
break;
}
}
for(int l=0;i+l<=n+1;l++){
if(val[i+l][k]){
cnbot[k]=l;
break;
}
}
}
for(int k=1;k<=n;k++){
p1=k-1;
p2=k+1;
carea=cntop[k]+cnbot[k]-1;
mtop=1000;
mbot=1000;
while(p1>0&&cntop[p1]){
mtop=min(mtop,cntop[p1]);
mbot=min(mbot,cnbot[p1]);
carea+=mtop+mbot-1;
p1--;
}
while(p2<=n&&cntop[p2]){
mtop=min(mtop,cntop[p2]);
mbot=min(mbot,cnbot[p2]);
carea+=mtop+mbot-1;
p2++;
}
ans=max(ans,carea);
}
}
return ans;
}
