Cod sursa(job #977550)

Utilizator raulmuresanRaul Muresan raulmuresan Data 26 iulie 2013 08:33:15
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
//problema rucsacului

#include <cstdio>


using namespace std;

int i, j, n,v[10005],frec[1000000],sum,aux,e,c,maxi;


int main() {

    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d",&n);
    scanf("%d",&sum);

    maxi=100000000;
    for(i=1;i<=n;i++)
    {

        scanf("%d%d\n",&e,&c);
        for(j=sum;j>=0;j--)
        {
            if(frec[j]!=0)
            {
                if(j+e<sum)
                {
                if(frec[j+e]>frec[j]+c || frec[j+e]==0)
                {
                   frec[j+e]=frec[j]+c;
                }

                }
                else
                {
                    if(maxi>frec[j]+c)
                        maxi=frec[j]+c;

                }

            }
        }
        if(e>=sum && maxi>c)
           {
               maxi=c;
           }
        if(frec[e]>c || frec[e]==0)
            frec[e]=c;
    }

    for(i=1;i<=sum;i++)
    {
         //printf("%d ",frec[i]);
    }
    if(maxi!=100000000)
    printf("%d",maxi);
    else printf("-1");
}