Cod sursa(job #3246063)

Utilizator maria.bertolonMaria Bertolon maria.bertolon Data 1 octombrie 2024 18:22:53
Problema Problema rucsacului Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
#include <stdlib.h>

#define MAXN 5000
#define MAXG 10000

int tot[2][MAXG + 1];

int main(){
  FILE *fin, *fout;
  int n, gmax, i, ig, g, p, ul, cu, aux;

  fin = fopen( "rucsac1.in", "r" );
  fscanf( fin, "%d%d", &n, &gmax );
  ul = 0;
  cu = 1;
  for( i = 1; i <= n; i++ ){
    fscanf( fin, "%d%d", &g, &p );
    for( ig = 0; ig < g; ig++ )
      tot[cu][ig] = tot[ul][ig];

    for( ig = g; ig <= gmax; ig++ ){
      tot[cu][ig] = tot[ul][ig] > tot[ul][ig - g] + p ? tot[ul][ig] : tot[ul][ig - g] + p;
    }

    aux = cu;
    cu = ul;
    ul = aux;
  }
  fclose( fin );

  fout = fopen( "rucsac1.out", "w" );
  fprintf( fout, "%d\n", tot[ul][gmax] );
  fclose( fout );

  return 0;
}