Submission #1227878

#TimeUsernameProblemLanguageResultExecution timeMemory
1227878Muhammad_AneeqHomecoming (BOI18_homecoming)C++20
0 / 100
161 ms327680 KiB
#include <iostream>
using namespace std;
long long solve(int N, int K, int *A, int *B)
{
  int n=N;
  long long dp[N+10][N+10]={};
  long long pre[2*N+10]={};
  for (int i=0;i<2*N;i++)
    pre[i+1]=pre[i]+B[i%N];
  for (int i=0;i<N;i++)
    for (int j=0;j<N;j++)
      dp[i][j]=-1e15;
  long long ans=0;
  for (int i=0;i<N;i++)
  {
    dp[i][i]=A[i]-(pre[i+K]-pre[i]);
    ans=max(ans,dp[i][i]);
  }
  for (int i=0;i<n;i++)
  {
    for (int j=i;j<n;j++)
    {
      for (int k=j+1;k<n;k++)
      {
        int l=k,r=k+K;
        l=max(l,j+K);
        r=min(r,i+n);
        int sm=0;
        if (r>=l)
          sm=pre[r]-pre[l];
        dp[i][k]=max(dp[i][k],dp[i][j]-sm+A[k]);
        ans=max(ans,dp[i][k]);
      }
    }
  }
  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...