Cod sursa(job #174583)
#include <stdio.h>
#include <values.h>
#define Nmax 8001
int d[Nmax], i, G, W, e, c, rez = MAXINT;
inline int min(int x, int y) { return x < y ? x : y; }
int main()
{
for (i = 1; i<Nmax; i++) d[i] = MAXINT;
for (freopen("energii.in", "r", stdin), scanf("%d\n%d\n", &G, &W); G; G--)
{
scanf("%d %d\n", &e, &c);
for (i = W + e; i>0; i--)
{
if ( i-e >= 0 && d[i-e] != MAXINT)
{
d[i] = min(d[i],d[i-e] + c);
if (i>=W) rez = min(rez,d[i]);
}
}
}
fprintf(fopen("energii.out", "w"), "%d", rez==MAXINT?-1:rez);
return 0;
}