Cod sursa(job #3300207)

Utilizator anamaria-carina.orszariAnamaria-Carina Orszari anamaria-carina.orszari Data 13 iunie 2025 19:40:47
Problema Problema rucsacului Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>

#define MAXN 5001
#define MAXG 10001

int W[MAXN], P[MAXN];
int Optim[MAXG];

int main() {
    FILE *fin = fopen("rucsac.in", "r");
    FILE *fout = fopen("rucsac.out", "w");

    int N, G;
    fscanf(fin, "%d %d", &N, &G);

    for (int i = 1; i <= N; ++i) {
        fscanf(fin, "%d %d", &W[i], &P[i]);
    }

    for (int i = 0; i <= G; ++i)
        Optim[i] = 0;

    int sol = 0;

    for (int i = 1; i <= N; ++i) {
        for (int j = G - W[i]; j >= 0; --j) {
            if (Optim[j + W[i]] < Optim[j] + P[i]) {
                Optim[j + W[i]] = Optim[j] + P[i];
                if (Optim[j + W[i]] > sol)
                    sol = Optim[j + W[i]];
            }
        }
    }

    fprintf(fout, "%d\n", sol);

    fclose(fin);
    fclose(fout);
    return 0;
}