Cod sursa(job #3259358)

Utilizator akumariaPatrascanu Andra-Maria akumaria Data 25 noiembrie 2024 22:39:05
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <stdio.h>

#define NMAX 5001
#define GMAX 10001

int res[GMAX];
int w[NMAX], p[NMAX];

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

    int n, maxweight;
    scanf("%d%d", &n, &maxweight);
    for(int i = 1; i <= n; ++i)
        scanf("%d%d", &w[i], &p[i]);

    int currentmax = 0, currentprofit = 0;
    for(int i = 1; i <= n; ++i)
        for(int j = currentmax; j >= 0; --j)
            if (j + w[i] <= maxweight) {
                if (j + w[i] > currentmax)
                    currentmax = j + w[i];
                
                if (res[j] + p[i] > res[j + w[i]]) {
                    res[j + w[i]] = res[j] + p[i];

                    if (res[j + w[i]] > currentprofit)
                        currentprofit = res[j + w[i]];
                }
                
            }
    
    printf("%d\n", currentprofit);

    return 0;
}