1262. Greatest Sum Divisible by Three

class Solution {
public:

int dp[50000][3];
int fun(int i,int rem, vector<int>&a)
{
    if(i==a.size())
    {
        if(rem==0)
            return 0;
        return INT_MIN;
    }
    if(dp[i][rem]!=-1)
        return dp[i][rem];
    
    return dp[i][rem]=max(a[i]+fun(i+1,(rem+a[i])%3,a),fun(i+1,rem,a));
}
int maxSumDivThree(vector<int>& a) {
    int i,j,n=a.size();
    memset(dp,-1,sizeof(dp));
    
    return fun(0,0,a);
    
}

};

Comments (1)