Submission #1240620

#TimeUsernameProblemLanguageResultExecution timeMemory
1240620noyancanturkSoccer Stadium (IOI23_soccer)C++17
64 / 100
1394 ms2162688 KiB
#include "soccer.h"

#include<bits/stdc++.h>
using namespace std;

#define pb push_back

using pii=pair<int,int>;

int biggest_stadium(int n,vector<vector<int>>a){
  int updp[n][n][n],downdp[n][n][n];
  for(int i=0;i<n;i++){
    for(int l=0;l<n;l++){
      int seen=0;
      for(int r=l;r<n;r++){
        seen+=a[i][r];
        if(seen)updp[i][l][r]=i+1;
        else if(!i)updp[i][l][r]=0;
        else updp[i][l][r]=updp[i-1][l][r];
      }
    }
  }
  for(int i=n-1;0<=i;i--){
    for(int l=0;l<n;l++){
      int seen=0;
      for(int r=l;r<n;r++){
        seen+=a[i][r];
        if(seen)downdp[i][l][r]=i-1;
        else if(i==n-1)downdp[i][l][r]=n-1;
        else downdp[i][l][r]=downdp[i+1][l][r];
      }
    }
  }
  int ans=0;
  for(int i=0;i<n;i++){
    int dp[n][n]{};
    for(int sz=n;sz;sz--){
      for(int l=0;l<=n-sz;l++){
        int r=l+sz-1;
        if(updp[i][l][r]<=downdp[i][l][r]){
          dp[l][r]=(r-l+1)*(downdp[i][l][r]-updp[i][l][r]+1);
        }
        if(l&&dp[l-1][r]){
          dp[l][r]=max(dp[l][r],
            dp[l-1][r]+(r-l+1)*(downdp[i][l][r]-downdp[i][l-1][r]+updp[i][l-1][r]-updp[i][l][r]));
        }
        if(r+1<n&&dp[l][r+1]){
          dp[l][r]=max(dp[l][r],
            dp[l][r+1]+(r-l+1)*(downdp[i][l][r]-downdp[i][l][r+1]+updp[i][l][r+1]-updp[i][l][r]));
        }
      }
    }
    for(int i=0;i<n;i++){
      for(int j=0;j<n;j++){
        ans=max(ans,dp[i][j]);
      }
    }
  }
  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...