| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 844402 | Lib | Soccer Stadium (IOI23_soccer) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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;
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;
}
