Cod sursa(job #1428468)

Utilizator czlateaZlatea Cezar czlatea Data 4 mai 2015 16:45:24
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#include <algorithm>
const int WMAX=5001;
const int INF=1e9;
int d[WMAX];
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int n,g,w,i,e,c,last,j;
    scanf("%d%d",&g,&w);
    for(i=1; i<=w; i++)
        d[i]=INF;
    last=0;
    for(i=1; i<=g; i++)
    {
        scanf("%d%d",&e,&c);
        for(j=last; j>=0; j--)
            if(d[j]!=INF)
                if(j+e<=w)
                {
                    if(d[j+e]>d[j]+c)

                    {d[j+e]=d[j]+c;

                    if(j+e>last)
                        last=j+e;
                    }
                }
                else if(d[w]>d[j]+e)
                {
                    d[w]=d[j]+e;
                    last=w;
                }
    }
    if(d[w]==INF)
    printf("-1");
        else
    printf("%d",d[w]);
    return 0;
}