Cod sursa(job #2917163)

Utilizator mircea_007Mircea Rebengiuc mircea_007 Data 3 august 2022 16:14:16
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
// This program was written by Mircea Rebengiuc
// on 03.08.2022
// for problem rucsac

#include <stdio.h>
#include <ctype.h>

#define MAXG 10000

FILE *fin, *fout;

static inline int fgetint(){
  int n = 0, ch;

  while( !isdigit( ch = fgetc( fin ) ) );
  do
    n = n * 10 + ch - '0';
  while( isdigit( ch = fgetc( fin ) ) );

  return n;
}

static inline int max( int a, int b ){ return a > b ? a : b; }

int dp[1 + MAXG];

int main(){
  fin = fopen( "rucsac.in", "r" );
  fout = fopen( "rucsac.out", "w" );

  int n, g, i;
  int w, p;
  
  n = fgetint();
  g = fgetint();
  for( ; n-- ; ){
    w = fgetint();
    p = fgetint();

    for( i = g ; i >= w ; i-- )
      dp[i] = max( dp[i], p + dp[i - w] );
  }

  p = 0;
  for( i = 0 ; i <= g ; i++ )
    p = max( p, dp[i] );

  fprintf( fout, "%d\n", p );

  fclose( fin );
  fclose( fout );

  return 0;
}