Pagini recente » Cod sursa (job #2188827) | Cod sursa (job #1886975) | Cod sursa (job #1385363) | Cod sursa (job #2561632) | Cod sursa (job #3134915)
#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;
}