Untitled
unknown
plain_text
a year ago
731 B
11
Indexable
int findAns(int index, int lastIndex,vector<int> A, vector<int> B, int K, int N, int Y,vector<vector<vector<int>>> &dp)
{
if(index<0|| K == 0)
return 0;
if(dp[index][lastIndex][K] != -1)
return dp[index][lastIndex][K];
int pick = INT_MIN;
if(lastIndex == N || abs(A[index]- A[lastIndex])<=Y)
pick = B[index] + findAns(index-1,index,A,B,K-1,N,Y,dp);
int notPick = findAns(index-1,lastIndex,A,B,K,N,Y,dp);
return dp[index][lastIndex][K] = max(pick,notPick);
}
int get_ans(int N, int K, int Y, vector<int> A, vector<int> B)
{
vector<vector<vector<int>>> dp(N+1,vector<vector<int>>(N+1,vector<int>(K+1,-1))) ;
return findAns(N-1,N,A,B,K,N,Y,dp);
}Editor is loading...
Leave a Comment