Cod sursa(job #1781781)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 17 octombrie 2016 14:23:38
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <stdio.h>
 
#define max(a, b) ((a) > (b) ? (a) : (b))
#define MAX_WEIGHT 10000
 
int d[2][MAX_WEIGHT + 1];
 
int main(void) {
  FILE *f;
  int n, maxWeight;
  int w, p;
 
  f = fopen("rucsac.in", "r");
  fscanf(f, "%d%d", &n, &maxWeight);
  for (int i = 0; i < n; i++) {
    fscanf(f, "%d%d", &w, &p);
    for (int j = 1; j <= maxWeight; j++) {
      if (j >= w) {
        d[i & 1][j] = max(d[!(i & 1)][j], d[!(i & 1)][j - w] + p);
      } else {
        d[i & 1][j] = d[!(i & 1)][j];
      }
    }
  }
  fclose(f);
 
  f = fopen("rucsac.out", "w");
  fprintf(f, "%d\n", d[!(n & 1)][maxWeight]);
  fclose(f);
  return 0;
}