Submission #840250

#TimeUsernameProblemLanguageResultExecution timeMemory
840250bachhoangxuanSoccer Stadium (IOI23_soccer)C++17
65.50 / 100
3831 ms49952 KiB
#include "soccer.h" #include<bits/stdc++.h> using namespace std; #define pii pair<int,int> #define fi first #define se second const int maxn=2005; const int inf=1e9; int f[maxn][maxn],Max[maxn][maxn]; int dp[35][35][35][35]; int cur[35][35][35]; int biggest_stadium(int n, std::vector<std::vector<int>> F) { for(int i=0;i<n;i++) for(int j=0;j<n;j++) for(int k=0;k<n;k++) cur[i][j][k]=-inf; int x=-1,y=-1,cnt=0; for(int i=0;i<n;i++){ for(int j=0;j<n;j++) if(F[i][j]==1) x=i,y=j,cnt++; } if(cnt==1) return n*n-min(x+1,n-x)*min(y+1,n-y); if(n<=30){ for(int i=0;i<n;i++){ int l=0; for(int j=0;j<n;j++){ if(F[i][j]){ for(int s=l;s<j;s++) for(int t=s;t<j;t++) cur[i][s][t]=t-s+1; l=j+1; } } for(int s=l;s<n;s++) for(int t=s;t<n;t++) cur[i][s][t]=t-s+1; } int ans=0; for(int d=0;d<n;d++){ for(int l=0;l+d<n;l++){ int r=l+d; for(int i=0;i<n;i++) for(int j=i;j<n;j++){ if(d==0) dp[l][r][i][j]=cur[l][i][j]; else dp[l][r][i][j]=max(dp[l+1][r][i][j]+cur[l][i][j],dp[l][r-1][i][j]+cur[r][i][j]); dp[l][r][i][j]=max(dp[l][r][i][j],-inf); ans=max(ans,dp[l][r][i][j]); } for(int d2=n-1;d2>=1;d2--) for(int i=0;i+d2<n;i++){ int j=i+d2; dp[l][r][i+1][j]=max(dp[l][r][i+1][j],dp[l][r][i][j]); dp[l][r][i][j-1]=max(dp[l][r][i][j-1],dp[l][r][i][j]); } } } return ans; } else{ vector<pii> p; for(int i=0;i<n;i++){ int l=0; for(int j=0;j<n;j++){ if(F[i][j]){ if(l<j) p.push_back({l,1-j}); l=j+1; } } if(l<n) p.push_back({l,1-n}); } sort(p.begin(),p.end()); for(int i=1;i<(int)p.size();i++) if(p[i].se<p[i-1].se) return 0; p.clear(); for(int i=0;i<n;i++){ int l=0; for(int j=0;j<n;j++){ if(F[j][i]){ if(l<j) p.push_back({l,1-j}); l=j+1; } } if(l<n) p.push_back({l,1-n}); } sort(p.begin(),p.end()); for(int i=1;i<(int)p.size();i++) if(p[i].se<p[i-1].se) return 0; return n*n-cnt; } }
#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...