Cod sursa(job #1728734)

Utilizator silkMarin Dragos silk Data 13 iulie 2016 16:22:24
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#define NMax 1003
#define DIM 15005
#define INF 1<<30

const int alfa = 10000;

int Power[NMax];
int Cost[NMax];
int CMin[DIM];

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

    int j,i,G,W,ans;

    scanf("%d",&G);
    scanf("%d",&W);
    for( i = 1; i <= G; ++i )
    scanf("%d %d",&Power[i],&Cost[i]);

    for( i = 1; i <= W + alfa; ++i ) CMin[i] = -1;

    for( i = 1; i <= G; ++i )
        for( j = W + alfa; j >= Power[i]; --j )
        if( CMin[ j - Power[i] ] != -1 )
            if( CMin[j] > Cost[i] + CMin[ j - Power[i] ] || CMin[j] == -1 )
            CMin[j] = Cost[i] + CMin[ j - Power[i] ];


    for( ans = INF, i = W; i <= W + alfa; ++i )
    if( CMin[i] < ans && CMin[i] != -1 ) ans = CMin[i];

    if( ans == INF ) printf("-1\n");
    else printf("%d\n",ans);


return 0;
}