Cod sursa(job #1040933)

Utilizator DiClauDan Claudiu DiClau Data 25 noiembrie 2013 10:28:50
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>

using namespace std;

int profit[10000];

struct val{
    int p,g;
};
val v[5005];

int main()
{
    FILE *in,*out;
    in=fopen("rucsac.in","r");
    out=fopen("rucsac.out","w");
    int n,k,j,i;
    fscanf(in,"%d%d",&n,&k);
    for (i=1;i<=n;i++)
    {
        fscanf(in,"%d%d",&v[i].g,&v[i].p);
    }
    for (i=1;i<=k;i++)
    {
        profit[i]=-1;
    }
    for (i=1;i<=n;i++)
    {
        for (j=k-v[i].g;j>=0;j--)
            if (profit[j]!=-1&&profit[j]+v[i].p>profit[j+v[i].g])
                profit[j+v[i].g]=profit[j]+v[i].p;
    }
    int max=-1;
    for (i=1;i<=k;i++)
    {
        if (max<profit[i])
            max=profit[i];
    }
    fprintf(out,"%d",max);
    return 0;
}