Pagini recente » Cod sursa (job #1774160) | Cod sursa (job #1271604) | Cod sursa (job #668660) | Cod sursa (job #2727870) | Cod sursa (job #2663833)
#include <fstream>
#define limit 1000000000
using namespace std;
ifstream cin("energii.in");
ofstream cout("energii.out");
long long G, W, energie[100001], costul[100001], d[100001];
int main(){
cin >> G >> W;
for (int i = 1; i <= G; i++)
cin >> energie[i] >> costul[i];
for (int i = 1; i <= W; i++)
d[i] = limit;
long long raspuns = limit;
for (int j = 1; j <= G; ++j){
for (int i = W - 1; i >= 0; --i){
if (d[i] != limit && i + energie[j] >= W)
raspuns = min(raspuns, d[i] + costul[j]);
else if (d[i] != limit)
d[i + energie[j]] = min(d[i + energie[j]], d[i] + costul[j]);
}
}
if (raspuns != limit)
cout << raspuns;
else
cout << -1;
return 0;
}