제출 #1064031

#제출 시각아이디문제언어결과실행 시간메모리
1064031amirhoseinfar1385축구 경기장 (IOI23_soccer)C++17
0 / 100
4546 ms85076 KiB
#include "soccer.h" #include<bits/stdc++.h> using namespace std; const int maxn=2000+10; int n,all[maxn][maxn],dpb[maxn][maxn],dpp[maxn][maxn]; void clear(){ for(int i=0;i<=n+1;i++){ for(int j=0;j<=n+1;j++){ all[i][j]=dpb[i][j]=dpp[i][j]=0; } } } void calbal(){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(all[i][j]==1){ dpb[i][j]=0; }else{ dpb[i][j]=dpb[i-1][j]+1; } } } } void calpaee(){ for(int i=n;i>=1;i--){ for(int j=1;j<=n;j++){ if(all[i][j]==0){ dpp[i][j]=dpp[i+1][j]+1; }else{ dpp[i][j]=0; } } } } int cal(int r,int c){ int ret=0; int mn1=n,mn2=n; for(int i=c;i>=1;i--){ mn1=min(dpp[r][i],mn1); mn2=min(dpb[r][i],mn2); ret+=mn1+mn2; if(mn1!=0&&mn2!=0){ ret--; } } mn1=n; mn2=n; for(int i=c;i<=n;i++){ mn1=min(dpp[r][i],mn1); mn2=min(mn2,dpb[r][i]); if(i==c){ continue; } ret+=mn1+mn2; if(mn1!=0&&mn2!=0){ ret--; } } return ret; } int solve(){ int ret=0; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ ret=max(ret,cal(i,j)); } } clear(); return ret; } int biggest_stadium(int N, std::vector<std::vector<int>> F) { n=N; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ all[i][j]=F[i-1][j-1]; } } calbal(); calpaee(); return solve(); }
#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...