Cod sursa(job #2761151)

Utilizator tryharderulbrebenel mihnea stefan tryharderul Data 30 iunie 2021 21:26:30
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX = 5003;
const int GMAX = 10003;

int n, g;

struct obiect {
    int w, p;
} v[NMAX];

int dp[GMAX];

int main() {
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    scanf("%d %d", &n, &g);
    for (int i = 1; i <= n; i++) {
        scanf("%d %d", &v[i].w, &v[i].p);
    }
    for(int i = 1; i <= g; i++)dp[i] = -1;

    for (int i = 1; i <= n; i++) {
        for (int j = g; j >= v[i].w; j--) {
            if(dp[j-v[i].w] != -1)dp[j] = max(dp[j - v[i].w] + v[i].p, dp[j] );
        }
    }
    int hmax = 0;
    for(int i=1;i<=g;i++)
        hmax = max(hmax,dp[i] );
    printf("%d\n",hmax);
    return 0;
}