Cod sursa(job #1067800)

Utilizator DenisacheDenis Ehorovici Denisache Data 27 decembrie 2013 15:29:28
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>

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

#define maxn 5001
#define maxg 10001

int greutate[maxn],profit[maxn],opt[maxg];
int i,j,n,gr,sol;
int main()
{
    fscanf(f,"%d %d",&n,&gr);
    for(i=1;i<=n;i++) fscanf(f,"%d %d",&greutate[i],&profit[i]);
    for (i=1;i<=n;i++)
    {
        for (j=gr-greutate[i];j>=0;j--)
        {
            if (opt[j+greutate[i]]<opt[j]+profit[i])
            {
                opt[j+greutate[i]]=opt[j]+profit[i];
                if (opt[j+greutate[i]]>sol) sol=opt[j+greutate[i]];
            }
        }
    }
    if (sol>=gr) fprintf(g,"%d",sol);
    else fprintf(g,"-1");
    return 0;
}