Cod sursa(job #1853269)

Utilizator victoreVictor Popa victore Data 21 ianuarie 2017 15:46:43
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
using namespace std;
const int inf=1.e7;
int ce[5005],cg[5005],cost[100005];
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int k,n,i,j,max=-1,g,w,min=inf,maxi,mini=inf;
    scanf("%d",&g);
    scanf("%d",&w);
    for(i=1;i<=g;i++)
    {
        scanf("%d%d",&ce[i],&cg[i]);
        if(ce[i]>maxi||i==1)
            maxi=ce[i];
    }
    for(j=1;j<=w+10001;j++)
        cost[j]=inf;
    cost[0]=0;
    for(i=1;i<=g;i++)
    {
        for(j=w;j>=0;j--)
        {
            if(cost[j]!=inf&&cost[j]+cg[i]<cost[j+ce[i]])
            {
                cost[j+ce[i]]=cost[j]+cg[i];
            }
        }
    }
    for(i=w;i<=w+maxi;i++)
    {
        if(cost[i]<mini)
            mini=cost[i];
    }
    if(mini==inf)
        printf("-1");
    else
        printf("%d",mini);
}