Cod sursa(job #3134915)

Utilizator NoRules123Osadici Darius Bogdan NoRules123 Data 31 mai 2023 20:27:27
Problema Problema rucsacului Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <stdio.h>
#include <time.h>


#define MAX(a,b) (((a)>(b))?(a):(b))

FILE *fin;
FILE *fout;

#define NMAX 5005
#define GMAX 10005

struct timespec start, end;

int n, p[NMAX], g[NMAX], gMax, dp[GMAX] ,ans;

int main(){
    //clock_gettime(CLOCK_MONOTONIC, &start);
    fin = fopen("rucsac.in", "rt");
    fscanf(fin, "%d %d", &n, &gMax);
    for(int i = 1; i <= n; i++){
        fscanf(fin, "%d %d", &g[i], &p[i]);
    }
    for(int i = 1; i <= n ;i++){
        for(int j = gMax; j >= g[i]; j--){
            dp[j] = MAX(dp[j], dp[j - g[i]] + p[i]);
        }
    }

    for(int i = 0; i <= gMax ; i++){
        ans = MAX(ans, dp[i]);
    }
    fout = fopen("rucsac.out", "wt");
    fprintf(fout, "%d\n", ans);
    fclose(fin);
    fclose(fout);
    //clock_gettime(CLOCK_MONOTONIC, &end);
    //double time_taken = (end.tv_sec - start.tv_sec) + (end.tv_nsec - start.tv_nsec) / 1e9;
    //printf("Problema rucsacului discrecta a fost rezolvata cu greedy in %lf secunde.\n", time_taken);
    return 0;
}