Pagini recente » Cod sursa (job #2875091) | Cod sursa (job #916528) | Cod sursa (job #3241884) | Cod sursa (job #542685) | Cod sursa (job #202027)
Cod sursa(job #202027)
#include<fstream>
#include<iostream>
using namespace std;
int g;
int w;
int e[1001];
int c[1001];
long costuri[10000001];
int main(void)
{
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
cin >> g;
cin >> w;
long max = 0;
for(int i=0;i<g;++i)
{
cin >> e[i] >> c[i];
max += e[i];
}
memset(costuri, -1, sizeof(costuri));
costuri[0] = 0;
long min = 20000001;
for(long i = 1; i<=max; ++i)
{
long min_c = 10000001;//costuri[i];
int poz = -1;
for(int j=0;j<g;++j)
{
if(e[j] <= i)
{
if(costuri[i-e[j]] > -1 && c[j] + costuri[i-e[j]] < min_c)
{
min_c = c[j] + costuri[i-e[j]];
poz = j;
}
}
}
if(poz != -1)
{
costuri[i] = min_c;
if(i>=w)
{
if(costuri[i] < min)
min = costuri[i];
}
e[poz] = 20000001;
}
}
if(min == 10000001)
cout << -1 << endl;
else
cout << min << endl;
return 0;
}