Cod sursa(job #1808525)

Utilizator Mstar_AngelComan Mara Stefania Mstar_Angel Data 17 noiembrie 2016 19:53:44
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<stdio.h>
struct product {
  int val,g;
} v[5001];
int profit[10001];
int main (){
  FILE *in,*out;
  in = fopen ("rucsac.in","r");
  out = fopen ("rucsac.out","w");
  int n,g,i,j,maxim;

  fscanf (in,"%d%d",&n,&g);
  for (i=1;i<=n;i++){
    fscanf (in,"%d%d",&v[i].g,&v[i].val);
  }

  //bord
  for (i=1;i<=g;i++)
    profit[i] = -1;

  profit[0] = 0;
  maxim = 0;
  for (i=1;i<=n;i++){
    for (j=g-v[i].g;j>=0;j--){
      if (profit[j] != -1 && profit[j+v[i].g] < profit[j] + v[i].val){
        profit[j+v[i].g] = profit[j] + v[i].val;
        maxim = maxim > profit[j+v[i].g] ? maxim : profit[j+v[i].g];
      }
    }
  }

  fprintf (out,"%d",maxim);


  fclose (in);
  fclose (out);
  return 0;
}