Cod sursa(job #87959)
#include<stdio.h>
typedef struct
{
int e, c;
} generator;
generator v[1005];
int e[1000000], c[1000000], n, x, suma;
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d%d",&n,&x);
int i, j, min;
for (i=1; i<=n; i++)
{
scanf("%d %d",&v[i].e,&v[i].c);
suma+=v[i].e;
}
if (suma<x){ printf("-1"); return 0;}
e[0]=1;
for(i=1; i<=n; i++)
for (j=suma; j>=0; j--)
if (e[j]==1)
{
e[j+v[i].e]=1;
if (c[j+v[i].e]==0) c[j+v[i].e]+=(v[i].c+c[j]);
else if (c[j+v[i].e]>v[i].c) c[j+v[i].e]=v[i].c;
}
min=c[suma];
for (i=x; i<suma; i++)
if (c[i]<min && c[i]) min=c[i];
printf("%d",min);
return 0;
}