Cod sursa(job #783854)
#include<iostream>
#include<fstream>
using namespace std;
const int maxx1=10006,maxx2=15010,inf=20000000;
int n,s,a,b,i,j,cost[maxx2],minim=inf,maxim,maxim2;
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d %d\n",&n,&s);
for(i=0;i<=s+maxx1;i++)
cost[i]=inf;
for(i=1;i<=n;i++)
{
scanf("%d %d\n",&a,&b);
maxim2=maxim;
for(j=0;j<=maxim;j++)
if(cost[j]!=inf)
{
cost[j+a]=min(cost[j+a],cost[j]+b);
maxim2=max(maxim2,j+a);
}
cost[a]=min(cost[a],b);
maxim=max(maxim2,a);
}
for(j=s;j<=s+maxx1;j++)
minim=min(minim,cost[j]);
if(minim==inf)
minim=-1;
printf("%d\n",minim);
return 0;
}