Pagini recente » Cod sursa (job #669380) | Cod sursa (job #1132822) | Cod sursa (job #2627755) | Cod sursa (job #2082707) | Cod sursa (job #1717706)
#include <iostream>
#include <fstream>
#define MAXVAL 100000001
using namespace std;
int G, W, d[50001], i, j;
struct generator
{int c,e;
};
generator v[50000];
int minim(int a, int b) {
return a > b ? b : a;
}
int main()
{ freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
cin>>G>>W;
for (i = 1; i <= 20000; i++) d[i] = MAXVAL;
for(i=1; i<=G; ++i)
cin>>v[i].e>>v[i].c;
for(i=1; i<=G; i++)
{
for(j=W; j>0; j--)
{
if(d[j] != MAXVAL)
{
d[j + v[i].e] = minim(d[j + v[i].e], d[j] + v[i].c);
/*if(j+v[i].e <= W)
{
if(d[j+v[i].e]==0 || d[j+v[i].e]>d[j]+v[i].c)
d[j+v[i].e]=d[j]+v[i].c;
}
else
{
if(d[W]==0 || d[W]>d[j]+v[i].c)
d[W]=d[j]+v[i].c;
}*/
}
}
d[v[i].e] = minim(d[v[i].e], v[i].c);
}
int min = MAXVAL;
for (i = W; i <= 20000; i++) min = minim(min, d[i]);
if(min != MAXVAL)
cout<<min;
else
cout<<-1;
return 0;
}