Cod sursa(job #1467003)

Utilizator moise_alexandruMoise Alexandru moise_alexandru Data 2 august 2015 10:18:49
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
const int maxn = 5005;
const int maxg = 10005;
int E[maxn];
int C[maxn];
int dp[maxg];
int main()
{
    int n, c;
    in >> n >> c;
    for(int i = 1; i <= n; i++)
        in >> E[i] >> C[i];
    int suma = 0;
    for(int i = 1; i <= n; i++)
        suma = suma + E[i];
    if(suma < c)
    {
        out << -1;
        return 0;
    }
    for(int i = 1; i <= c; i++)
        dp[i] = -1;
    dp[0] = 0;
    for(int i = 1; i <= n; i++)
    {
        for(int j = c-C[i]; j >= 0; j--)
        {
            if(dp[j] != -1)
            {
                dp[j + C[i]] = max(dp[j + C[i]], dp[j] + E[i]);
            }
        }
    }
    int i = c;
    while(dp[i] == -1)
        i++;
    out << i;
    return 0;
}