Pagini recente » Cod sursa (job #2947324) | Cod sursa (job #2081647) | Cod sursa (job #2689210) | Cod sursa (job #795174) | Cod sursa (job #2771842)
#include <fstream>
using namespace std;
ifstream cin("energii.in");
ofstream cout("energii.out");
int n, G, w[5001], p[5001], i, f[1000000], j, sol, s, ok, mini = 10005;
int main () {
cin>>n>>G;
for (i = 1;i <= n;i++) {
cin>>w[i]>>p[i];
s += w[i];
}
if (s < G) {
cout<<-1;
return 0;
}
for (i = 1;i <= n;i++) {
for (j = G;j >= 1;j--)
if (f[j] != 0) {
if (j + w[i] <= G && f[j + w[i]] < f[j] + p[i])
f[j + w[i]] = f[j] + p[i];
}
if (w[i] <= G && p[i] > f[w[i]]) {
f[w[i]] = p[i];
if (p[i] == 0)
ok = 1;
}
}
for (i = 1;i <= G;i++)
sol = max(sol, f[i]);
if (sol != 0)
cout<<sol;
if (sol == 0 && ok == 1)
cout<<sol;
else if (sol == 0 & ok == 0) {
for (i = 1;i <= n;i++) {
if (w[i] >= G && p[i] < mini)
mini = p[i];
}
cout<<mini;
return 0;
}
}