Cod sursa(job #631345)

Utilizator desoComan Andrei deso Data 7 noiembrie 2011 20:49:46
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <string>
using namespace std;

#define LL long long
#define INFILE "rucsac.in" 
#define OUTFILE "rucsac.out"
#define NMAX 10001
int p[NMAX], n, g;

void additem(int gi, int pi)
{
  for(int i = g-gi; i>=0; i--)
    if( p[i]>0 && p[i+gi]<p[i]+pi )
      p[i+gi] = p[i] + pi;
  p[gi] = max(p[gi], pi);
}

int main()
{
  freopen(INFILE, "r", stdin);
  freopen(OUTFILE, "w", stdout);

  cin >> n >> g;

  memset(p, 0, sizeof(p));
  for(int i=0; i<n; i++)
  {
    int gi, pi;
    cin >> gi >> pi;
    additem(gi, pi);
  }
  
  while( p[g]==0 ) g--;

  cout << p[g];

	return 0;
}