Cod sursa(job #1095861)

Utilizator danny794Dan Danaila danny794 Data 1 februarie 2014 01:41:40
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>

using namespace std;

const int NMAX = 5005;
const int GMAX = 10005;
int N, G;
int bag[NMAX][2];
int matrix[2][GMAX];

void read() {
  freopen("rucsac.in", "r",stdin);
  freopen("rucsac.out", "w",stdout);
  scanf("%i%i", &N, &G);
  for(int i = 1; i <= N; i++)
    scanf("%i%i", &bag[i][0], &bag[i][1]);
}

void solve() {
  int swc = 0;
  for(int i = 1; i <= N; i++) {
    for(int j = 1; j <= G; j++) {
      if(j - bag[i][0] >= 0 && matrix[swc][j-bag[i][0]] + bag[i][1] > matrix[swc][j])
        matrix[1 - swc][j] = matrix[swc][j-bag[i][0]] + bag[i][1];
      else
        matrix[1 - swc][j] = matrix[swc][j];
    }
    swc = 1 - swc;
  }
  printf("%i", matrix[swc][G]);
}

int main() {
  read();
  solve();
	return 0;
}