Cod sursa(job #699112)

Utilizator biroBiro Alexandru biro Data 29 februarie 2012 17:35:07
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <algorithm>
#include <stdio.h>
#define DIM 5001

using namespace std ;

int g[DIM] ;
int v[DIM] ;
int sol[10001] ;

int main() {
  freopen ("rucsac.in","r",stdin) ;
  freopen ("rucsac.out","w",stdout) ;

  int n , gt ;
  scanf ("%d%d" , &n , &gt) ;

  for (int i=1 ; i<=n ; ++i) {
    scanf ("%d%d" , &g[i] , &v[i]) ;
  }
  
  int rezultat=-1 ;
  
  for (int i=1 ; i<=n ; ++i) {
    for (int j=gt-g[i] ; j>=0 ; --j) {
      if (sol[j+g[i]]<sol[j]+v[i])
        sol[j+g[i]]=sol[j]+v[i] ;
      if (sol[j+g[i]]>rezultat) rezultat = sol[j+g[i]] ;
    }
  }

  printf ("%d" , rezultat) ;

  return 0 ;
}