Pagini recente » Cod sursa (job #2110261) | Cod sursa (job #1581468) | Diferente pentru utilizator/robybrasov intre reviziile 70 si 69 | Cod sursa (job #528945) | Cod sursa (job #1446525)
#include <fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int n, w;
long long int i, j, maxim;
int a[10001];
struct en
{
int cant, cost;
}b[5001];
int main()
{
f >> n >> w;
for (i = 1; i <= n; i++)
f >> b[i].cant >> b[i].cost;
for (i = 1; i <= n; i++)
for (j = w - b[i].cant; j >= 0; j--)
if (a[j+b[i].cant] < a[j] + b[i].cost)
{
a[j+b[i].cant] = a[j] + b[i].cost;
if (maxim < a[j+b[i].cant])
maxim = a[j+b[i].cant];
}
if (maxim <= 3000000000)
g << maxim;
else
g << -1;
}