Cod sursa(job #1279553)

Utilizator andrei_r_97Radoi Andrei andrei_r_97 Data 30 noiembrie 2014 16:03:42
Problema Problema rucsacului Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
#include <stdlib.h>

#define MAX_N 5000
#define MAX_G 10000

int w[MAX_N], p[MAX_N];
int optim[MAX_G];

int main()  {

  FILE *in  = fopen("rucsac.in","r");
  FILE *out = fopen("rucsac.out", "w");

  int n, g;
  fscanf(in,"%d %d", &n, &g);

  int i;
  for ( i = 1; i <= n; i++ )
    fscanf(in,"%d %d",&w[i], &p[i]);

  optim[0] = 0;
  int sol = 0;

  int j;
  for ( i = 1; i <= n; i++ )
    for ( j = g - w[i]; j >= 0; j-- ) {
      if ( optim[j+w[i]] < optim[j] + p[i] ){
        optim[j+w[i]] = optim[j] + p[i];
        if ( optim[j+w[i]] > sol )
          sol = optim[j+w[i]];
      }
    }

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

  fclose(in);
  fclose(out);

  return 0;
}