Cod sursa(job #2360008)

Utilizator My_Road_To_ONIAndrei Panainte My_Road_To_ONI Data 1 martie 2019 11:30:55
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

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

int const GMAX = 1005;
int const WMAX = 5005;
int const DMAX = 10005;
int N, C;
int dp[GMAX][WMAX];
int e[DMAX], c[DMAX];

void Read()
{
    int i;
    fin >> N >> C;
    for (i = 1; i <= N; i++)
        fin >> e[i] >> c[i];
}

void DP()
{
    int i, j;
    dp[1][e[1]] = c[i];
    for (i = 2; i <= N; i++)
        for (j = 1;  j <= C; j++)
        {
            if(j - e[j] >= 0)
                dp[i][j] = max(dp[i-1][j], dp[i-1][j - e[i]] + c[i]);
            else dp[i][j] = dp[i-1][j];
        }
    int maxi;
    maxi = dp[N][1];
    for (i = 2; i <= C; i++)
        maxi = max(maxi, dp[N][i]);
    if(maxi >= DMAX) fout << "-1";
    else fout << maxi;
}

int main()
{
    Read();
    DP();
    return 0;
}