Cod sursa(job #2551903)

Utilizator RedPipperNastasa Stefan-Alexandru RedPipper Data 20 februarie 2020 12:31:01
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <bits/stdc++.h>
#define INF -1000

using namespace std;

ifstream fin("joc4.in");
ofstream fout("joc4.out");

const int lmt = 5e3+4;
int table[2][lmt];
int dp[2][lmt][12];
int n,k;
void citire()
{
    fin>>n>>k;
    for(int i=0;i<2;++i)
    {
        for(int j=1;j<=n;++j)
        {
            fin>>table[i][j];
        }
    }
}
int main()
{
    citire();
    dp[0][1][1] = table[0][1];
    dp[1][1][1] = table[1][1] + table[0][1];

    for(int i = 2; i<=n;++i)
    {
        for(int j = 0;j<2;++j)
        {
            for(int q = 2; q<=k;++q)
            {
                if(q>i)
                    break;
                
                dp[j][i][q] = dp[j][i - 1][q - 1] + table[j][i];
            }
        }

        for(int j=0; j<2;++j)
        {
            int maxval = INF;
            for(int q=2;q<=k;++q)
            {
                if(q>i)
                    break;
                maxval = max(maxval, dp[1-j][i][q]);
            }
            dp[j][i][1]=maxval + table[j][i];
        }
    }
    int maxval = INF;
    for(int q=1;q<=k;++q)
    {
        maxval = max(dp[1][n][q], maxval);
    }

    fout<<maxval<<endl;

    return 0;
}