Cod sursa(job #1068374)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 28 decembrie 2013 12:03:49
Problema Energii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>
#include <memory.h>
#include <algorithm>

#define Gmax 5005
#define INF 0x3f3f3f3f

using namespace std;
int N,CP,DP[Gmax];

void read()
{
    scanf("%d%d",&N,&CP);
    memset(DP,INF,sizeof(DP));
}

void dynamic()
{
    int Ei,Ci,gm = 0,mn = INF;
    DP[0] = 0;
    for(int i = 1; i <= N; ++i)
    {
        scanf("%d%d",&Ei,&Ci);
        for(int j = CP + Ei; j - Ei >= 0 ; --j)
        {
            if(DP[j] > DP[j-Ei] + Ci)
                DP[j] = DP[j-Ei] + Ci;
            if( j > CP)
                mn = min ( mn , DP[j]);
        }
    }
    int ans = min ( DP[CP], mn);
    if(ans != INF)
        printf("%d\n",ans);
    else
        printf("-1\n");
}

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);

    read();
    dynamic();

    return 0;
}