Cod sursa(job #3349689)

Utilizator filipdanieloanFilip-Daniel Oancea filipdanieloan Data 1 aprilie 2026 15:44:35
Problema Problema rucsacului Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <stdio.h>

FILE *fin, *fout;

struct elem {
    int w, p;
}v[5001];

int dp[2][10001];

int max(int a, int b) {
    if(a > b)
        return a;
    return b;
}

int main(void) {
    fin = fopen("rucsac.in", "r");
    int n, g;
    fscanf(fin, "%d%d", &n, &g);
    for(int i = 1; i <= n; ++i)
        fscanf(fin, "%d%d", &v[i].w, &v[i].p);
    fclose(fin);

    for(int i = 1; i <= n; ++i) {
        for(int j = 1; j <= g; ++j) {
            dp[i%2][j] = dp[(i-1)%2][j];
            if(v[i].w <= j)
                dp[i%2][j] = max(dp[i%2][j], dp[(i-1)%2][j - v[i].w] + v[i].p);
        }
    }

    fout = fopen("rucsac.out", "w");
    fprintf(fout, "%d\n", dp[n%2][g]);

    return 0;
}