Cod sursa(job #792240)

Utilizator ericptsStavarache Petru Eric ericpts Data 26 septembrie 2012 19:49:16
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <stdio.h>

using namespace std;

#define inf 0x7fffFFFF

int E[1001];
int C[1001];
int cost[2*10001];
unsigned int cmin = -1;

#define min(a,b) (((a) < (b)) ? (a) : (b))

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int g,w,i,j;
    scanf("%d%d",&g,&w);
    for(i=1;i<=g;++i)
        scanf("%d%d",&E[i],&C[i]);
    for(j=2*w;j>=0;--j)
        cost[j] = inf;
    cost[0] = 0;
    for(i=1;i<=g;++i)
    {

        for(j=0;j<=2*w - E[i];++j)
        {
            if(cost[j+E[i]] > cost[j] + C[i])
                cost[j+E[i]] = cost[j] + C[i];
        }
    }
    for(j=w;j<=2*w;++j)
        cmin = min(cmin,cost[j]);
    if(cmin < inf)
        cout << cmin;
    else
        cout << -1;
    return 0;
}