Cod sursa(job #1681686)
Utilizator | Data | 9 aprilie 2016 17:26:37 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | c | Status | done |
Runda | Arhiva educationala | Marime | 0.44 kb |
#include <stdio.h>
#include <stdlib.h>
int main()
{
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
int n, *dp, g, w, p, i, j;
scanf("%d%d", &n, &g);
dp = calloc((g+1), sizeof(int));
for(i=1; i<=n; i++)
{
scanf("%d%d", &w, &p);
for(j=g; j>=w; j--)
if(dp[j-w]+p>dp[j])
dp[j] = dp[j-w] + p;
}
printf("%d", dp[g]);
return 0;
}