Submission

Status:
-----xxxxx

Score: 0

User: njoop

Problemset: เข้าแถว

Language: cpp

Time: 0.010 second

Submitted On: 2025-04-12 17:28:10

#include <bits/stdc++.h>
using namespace std;
int cheese[10001];
int dp[10002][102][2];
int n,g;
/*int solve(int i,int j,bool s)
{
    if(i>=n)
        return 0;
    //cout<<i<<' '<<j<<' '<<s<<'\n';
    if(dp[i][j][s]!=-1) return dp[i][j][s];
    if(s==false)
    {
        dp[i][j][s]=max(solve(i+1,j,true)+cheese[i],solve(i+1,j,false));
        if(j>0)
        {
            dp[i][j][s]=max(dp[i][j][s],solve(i+1,j-1,false)+cheese[i]);
        }
        return dp[i][j][s];
    }
    else
    {
        dp[i][j][s]=solve(i+1,j,false);
        if(j>0)
        {
            dp[i][j][s]=max(dp[i][j][s],solve(i+1,j-1,true)+cheese[i]);
        }
        return dp[i][j][s];
    }
}*/

int main()
{
    cin>>n>>g;
    /*for(int i=0;i<=n;i++)
    {
        for(int j=0;j<=g;j++)
        {
            dp[i][j][0]=-1;
            dp[i][j][1]=-1;
        }
    }*/
    for(int i=0;i<n;i++)
    {
        cin>>cheese[i];
    }
    //0 g false
    for(int i=n-1;i>=0;i--)
    {
        for(int j=0;j<=g;j++)
        {
            for(int s=0;s<2;s++)
            {
                if(s==0)
                {
                  dp[i][j][s]=max(dp[i+1][j][1]+cheese[i],dp[i+1][j][0]);
                  if(j>0)
                   {
                      dp[i][j][s]=max(dp[i][j][s],dp[i+1][j-1][0]+cheese[i]);
                   }
                }
                else
                {
                  dp[i][j][s]=dp[i+1][j][0];
                  if(j>0)
                  {
                      dp[i][j][s]=max(dp[i][j][s],dp[i+1][j-1][1]+cheese[i]);
                  }
                }
            }
        }
    }
    cout<<dp[0][g][false];
}