Pagini recente » Cod sursa (job #1146147) | Cod sursa (job #2225967) | Cod sursa (job #1194645) | Cod sursa (job #1115034) | Cod sursa (job #202190)
Cod sursa(job #202190)
#include<fstream>
#include<iostream>
using namespace std;
#define inf 50000000
int g;
int w;
long e[1001];
long c[1001];
long costuri[10000001];
long add(long a, long b)
{
if(a == inf || b == inf)
return inf;
return a+b;
}
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];
}
costuri[0] = 0;
for(long i = 1; i<=max; ++i)
costuri[i] = inf;
long min = inf;
for(int j=0;j<g;++j)
{
for(long i = max; i>=1; --i)
{
if(i >= e[j])
{
if(costuri[i] > add(costuri[i-e[j]],c[j]))
costuri[i] = add(costuri[i-e[j]],c[j]);
}
if(i>=w)
{
if(costuri[i] < min)
min = costuri[i];
}
}
}
if(min == inf)
cout << -1 << endl;
else
cout << min << endl;
return 0;
}