Cod sursa(job #682653)
#include <fstream>
using namespace std;
#define dim 1010
#define inf 0x3f3f3f3f
struct energie
{
int x, y;
}v[dim];
int sol[dim*10];
int main()
{
ifstream fin("energii.in");
ofstream fout("energii.out");
int g, w, n,i;
int a, b;
fin>>g >>w;
n=g;
for(i=1;i<=dim*10;++i)
sol[i]=inf;
int maxim=0;
for(i=1;i<=n;++i)
{
fin>>a >>b;
for(int j=maxim-a;j>=0;--j)
if(sol[j]!=inf)
//if(j+a<=dim*10)
sol[j+a]=min(sol[j+a],b+sol[j]);
maxim=maxim+a;
maxim=min(maxim,dim*10-1);
}
int raspuns=inf;
for(i=w;i<=dim*10;++i)
if(sol[i]!=inf)
raspuns=min(raspuns,sol[i]);
if(raspuns==inf)
fout<<"-1";
else
fout<<raspuns;
return 0;
}