Cod sursa(job #1051274)

Utilizator rexlcdTenea Mihai rexlcd Data 9 decembrie 2013 21:34:06
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>

using namespace std;

struct generare
{
    int prod,nec;
};
generare v[1005];

int en[20000];

int min(int x, int y)
{
    int min;
    if (x<y)
        min=x;
    else
        min=y;
    return min;
}

int main()
{
    FILE *in,*out;
    in=fopen("energii.in","r");
    out=fopen("energii.out","w");
    int n,w,fl=0;
    fscanf(in,"%d%d",&n,&w);
    int i,j;
    for (i=1;i<=n;i++)
        fscanf(in,"%d%d",&v[i].prod,&v[i].nec);
    for (i=1;i<=w+10005;i++)
        en[i]=1000000000;
    for (i=1;i<=n;i++)
        for (j=w+10005;j>=0;j--)
            if (en[j]!=1000000000)
                en[j+v[i].prod]=min(en[j+v[i].prod],en[j]+v[i].nec);
    /*
    for(j=0 ; j<=w ; j++)
        fprintf(out,"(%d, %d) ",j,en[j]);
    */
    int minim=1000000000;
    for (i=w;i<=w+10005;i++)
        if (en[i]!=1000000000)
        {
            if (minim>en[i])
                minim=en[i];
            fl=1;
        }
    if (fl==0)
        fprintf(out,"-1");
    else
        fprintf(out,"%d ",minim);
    return 0;
}