Submission #1212833

#TimeUsernameProblemLanguageResultExecution timeMemory
1212833Aviansh축구 경기장 (IOI23_soccer)C++20
0 / 100
4593 ms391692 KiB
#include "soccer.h" #include <bits/stdc++.h> using namespace std; int biggest_stadium(int n, std::vector<std::vector<int>> F) { int dp[n][n][n][n]; for(int i = 0;i<n;i++){ for(int j = 0;j<n;j++){ for(int k = 0;k<n;k++){ fill(dp[i][j][k],dp[i][j][k]+n,-1e9); } } } //{start point,endpoint,l in curr row, r in curr row. for(int s = 0;s<n;s++){ //start point s. for(int e = s;e<n;e++){ //end point e if(s==e){ //base case. for(int l = 0;l<n;l++){ bool val = 1; for(int r = l;r<n;r++){ if(F[s][r]){ val=0; } if(val){ dp[s][e][l][r]=r-l+1; } } } continue; } for(int l = 0;l<n;l++){ for(int r = l;r<n;r++){ if(F[e][r]) break; for(int pl = l;pl<=r;pl++){ for(int pr = pl;pr<=r;pr++){ dp[s][e][l][r]=max(dp[s][e][l][r],dp[s][e-1][pl][pr]+(r-l+1)); } } } } } //now end point above s, ie reverse. for(int e = s-1;e>=0;e--){ //end point e for(int l = 0;l<n;l++){ for(int r = l;r<n;r++){ if(F[e][r]) break; for(int pl = l;pl<=r;pl++){ for(int pr = pl;pr<=r;pr++){ dp[s][e][l][r]=max(dp[s][e][l][r],dp[s][e+1][pl][pr]+(r-l+1)); } } } } } } int ans = 0; for(int s = 0;s<n;s++){ for(int e = 0;e<n;e++){ for(int i = s;i<=e;i++){ for(int l = 0;l<n;l++){ for(int r = l;r<n;r++){ ans=max(ans,dp[s][i][l][r]+dp[e][i][l][r]-(r-l+1)); } } } } } return ans; }
#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...