Cod sursa(job #1866855)

Utilizator GeorgianBaditaBadita Marin-Georgian GeorgianBadita Data 3 februarie 2017 16:26:05
Problema Problema rucsacului Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <cstdio>
#define WMAX 10001
#define NMAX 5001
#define MAX(A, B) A >= B? A : B
#define INF 1e9
using namespace std;

FILE *f = freopen("rucsac.in", "r", stdin);
FILE *g = freopen("rucsac.out", "w", stdout);

int dp[NMAX][WMAX];
int N, GMAX, C[NMAX], G[NMAX];

void read() {
    scanf("%d%d", &N, &GMAX);
    for(int i = 1; i<=N; i++)
        scanf("%d%d", &G[i], &C[i]);
}
void dinamic() {
    for(int i = 1; i<=N; i++)
        for(int CW = 0; CW <= GMAX; CW ++) {
            dp[i][CW] = dp[i - 1][CW];
            if(G[i] <= CW)
            dp[i][CW] = MAX(dp[i][CW], dp[i - 1][CW - G[i]] + C[i]);
        }
       //printf("%d", dp[N][GMAX]);
}
int main() {
    read();
    dinamic();
        printf("%d", dp[N][GMAX]);

    return 0;
}