Cod sursa(job #1860730)

Utilizator victoreVictor Popa victore Data 28 ianuarie 2017 12:39:25
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>

using namespace std;
const int inf = 1.e9;
int d[5005];
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int n,i,enmin,en,cost,rezolv=inf,j,last=0;
    scanf("%d%d",&n,&enmin);
    for(i=1;i<=enmin;i++)
        d[i]=inf;
    d[0]=0;
    for(i=1;i<=n;i++)
    {
        scanf("%d%d",&en,&cost);
        for(j=last;j>=0;j--)
        {
            if(d[j]!=inf)
            {
                if(d[j+en]>d[j]+cost)
                {
                    d[j+en]=d[j]+cost;
                    if(j+en>=enmin&&d[j+en]<rezolv)
                        rezolv=d[j+en];
                    else if(j+en<enmin)
                        last=j+en;
                }
            }
        }
    }
    if(rezolv==inf)
    {
        printf("-1");
        return 0;
    }
    printf("%d",rezolv);
    return 0;
}