Cod sursa(job #1174582)

Utilizator dragos_vecerdeaVecerdea Dragos dragos_vecerdea Data 23 aprilie 2014 14:52:34
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>

using namespace std;
int n ,G ,profit[10001] ,val[10001] ,g[10001] ,i , j;
FILE *fin ,*fout;
int main()
{

    fin=fopen("rucsac.in" ,"r");
    fout=fopen("rucsac.out" ,"w");
    fscanf(fin , "%d%d" ,&n ,&G);
    for(i=1;i<=n;i++)
    {
        fscanf(fin , "%d%d" ,&g[i] ,&val[i]);
    }
    for(j=1;j<=G;j++) profit[j]=-1;

    for(i=1;i<=n;i++)
        for(j=G-g[i];j>=0;j--)
        {
            if(profit[j]!=-1 && profit[j]+val[i]>=profit[j+g[i]]) profit[j+g[i]]=profit[j]+val[i];
        }
    int pozz ,max=-1;
    for(j=1;j<=G;j++)
    {
        if(profit[j]>max)pozz=j;
    }
    fprintf(fout ,"%d" ,profit[pozz]);
    return 0;
}