Cod sursa(job #1542586)

Utilizator AlexVolatiluVoicu Alex AlexVolatilu Data 5 decembrie 2015 14:57:23
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
#define emax 10011003
using namespace std;

int cmin[emax];
char s[emax];

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int G,W,i,j,m;
    int e[1001],c[1001];
    scanf("%d\n%d",&G,&W);
    for(i=0;i<G;i++)
        scanf("%d%d",e+i,c+i);

    for(i=0;i<=emax;i++)
        cmin[i]=1<<30;

    m=0;s[0]=1;
    cmin[0]=0;
    for(i=0;i<G;i++)
    {
        for(j=m;j>=0;j--)
        {
            if(s[j]&&cmin[j]+c[i]<cmin[j+e[i]])
            {
                cmin[j+e[i]]=cmin[j]+c[i];
                if(m<j+e[i]) m=j+e[i];
            }
        }
    }
    i=1<<30;
    for(j=m;j>=W;j--)
        if(cmin[j]<i) i=cmin[j];

    printf("%d",i);
    return 0;
}