Cod sursa(job #458011)

Utilizator h_istvanHevele Istvan h_istvan Data 22 mai 2010 17:09:18
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
#define FOR(i,a,b) for(i=a;i<=b;++i)
#define MAXN 1010
#define MAXK 5010
#define INF 0xFFFFFF

int n,k,i,j;
int c[MAXN],e[MAXN];
int dp[MAXK];

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    
    scanf("%d\n",&n);
    scanf("%d\n",&k);
    FOR (i,1,n)
        scanf("%d %d\n",&e[i],&c[i]);
        
    FOR (i,1,k) dp[i] = INF;
    
    FOR (i,1,n)
    {
        for (j = k;j >= e[i];--j)
            if (dp[j] > dp[j-e[i]]+c[i]) dp[j] = dp[j-e[i]]+c[i];
        FOR (j,1,e[i]-1)
            if (dp[j] > c[i]) dp[j] = c[i];
    }
            
    if (dp[k] < INF) printf("%d\n",dp[k]);
    else             printf("-1\n");
    
    return 0;
}