Cod sursa(job #1667094)

Utilizator TincaMateiTinca Matei TincaMatei Data 28 martie 2016 17:32:09
Problema Energii Scor 95
Compilator c Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#define MAX_N 1000
#define MAX_E 10000
#define INFINIT 1000000000

int rucsac[ 1 + MAX_E ];

int min( int a , int b ) {
  if( a < b )
    return a;
  else
    return b;
}

int main() {
  int n , w , i , cost , e , j , s , rez;
  FILE *fin = fopen( "energii.in" , "r" );
  
  fscanf( fin , "%d%d" , &n , &w );
  
  for( i = 1 ; i <= MAX_E ; i++ )
    rucsac[ i ] = INFINIT;
  
  s = 0;
  rez = INFINIT;
  for( i = 0 ; i < n ; i++ ) {
    fscanf( fin , "%d%d" , &e , &cost );
    s = min( s + e , MAX_E );
    for( j = s ; j >= e ; j-- )
      if( j >= e )
        rucsac[ j ] = min( rucsac[ j ] , rucsac[ j - e ] + cost );
    
    for( j = w ; j <= s ; j++ )
      rez = min( rez , rucsac[ j ] );
  }
  
  fclose( fin );

  FILE *fout = fopen( "energii.out" , "w" );
  fprintf( fout , "%d" , rez );
  fclose( fout );
  return 0;
}