Pagini recente » Cod sursa (job #2609811) | Cod sursa (job #135173) | Cod sursa (job #329420) | Cod sursa (job #1509267) | Cod sursa (job #1913139)
#include <bits/stdc++.h>
FILE *fin = fopen("rucsac.in", "r");
FILE *fout = fopen("rucsac.out", "w");
int N, G, dp[2][10005], g[5005], v[5005];
inline void Read() {
int i;
fscanf(fin, "%d %d", &N, &G);
for(i = 1; i <= N; i++) {
fscanf(fin, "%d %d", &g[i], &v[i]);
}
fclose(fin);
}
inline void Solve() {
int i, j, ans, L;
L = 1;
for(i = 1; i <= N; i++) {
L = 1 - L;
for(j = 0; j <= G; j++) {
dp[L][j] = dp[1 - L][j];
if(j >= g[i]) {
dp[L][j] = std::max(dp[1 - L][j - g[i]] + v[i], dp[L][j]);
}
}
}
ans = dp[L][0];
for(i = 1; i <= G; i++)
ans = std::max(ans, dp[L][i]);
fprintf(fout, "%d\n", ans);
fclose(fout);
}
int main()
{
Read();
Solve();
return 0;
}