Cod sursa(job #1309069)

Utilizator heracleRadu Muntean heracle Data 5 ianuarie 2015 11:00:39
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>

FILE* in=fopen("energii.in","r");
FILE* out=fopen("energii.out","w");

const int Q=1001,INF=2000000000;

int n,k;

int e[Q],c[Q];

int r[5*Q];

int main()
{
    fscanf(in,"%d%d",&n,&k);

    for(int i=1; i<=n; i++)
    {
        fscanf(in,"%d%d",&e[i],&c[i]);
    }

    for(int i=1; i<=k; i++)
        r[i]=INF;

    int rez=INF;

    for(int i=1; i<=n; i++)
    {
        for(int j=k-1; j>=0; j--)
        {
            if(r[j]!=INF)
            {
                if(j+e[i]>=k)
                {
                    if(r[j]+c[i]<rez)
                        rez=r[j]+c[i];
                }
                else
                {
                    if(r[j+e[i]]>r[j]+c[i])
                        r[j+e[i]]=r[j]+c[i];
                }
            }
        }
    }

    fprintf(out,"%d",rez);

    return 0;
}