#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;
for (int i=0;i<N;i++)
dp[i][i]=A[i]-(pre[i+K]-pre[i]);
long long ans=0;
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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |