Cod sursa(job #3354471)

Utilizator probabilsaraMaria Sara probabilsara Data 18 mai 2026 14:18:47
Problema Problema rucsacului Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <stdio.h>

int W[10001], P[10001];
int dp[10001];


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

int main(){

    FILE* f = fopen("rucsac.in", "rb");
    if(f == NULL){
        printf("Eroare la deschoderea fisierului");
        return 1;
    }

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

    for(int i = 0; i < N; i++)
        fscanf(f, "%d%d", &W[i], &P[i]);
    
    // W - greutatea
    // P - profitul

    // dp[i] = profitul maxim ai greutatea sa fie i
    // dp[j] = max(P[i-1] + dp[j - W[i-1]], dp[j]);

    dp[0] = 0;
    for(int i = 1; i <=N; i++) // i = indicele ob
        for(int j = G; j >= 0 && j-W[i-1] >= 0; j--) // j - indicele greutatii
            dp[j] = max(P[i-1] + dp[j - W[i-1]], dp[j]);

    FILE* fout = fopen("rucsac.out", "wb");
    if(f == NULL){
        printf("Eroare la scrierea in fisier");
        return 1;
    }
    fprintf(fout, "%d", dp[G]);
    fclose(f);
}