Pagini recente » Cod sursa (job #2371112) | Cod sursa (job #392201) | Cod sursa (job #1200298) | Cod sursa (job #3187205) | Cod sursa (job #1096666)
/*
Keep It Simple!
*/
#include <cstdio>
#define MAXN 1005
#define MAXG 10000005
#define min(a,b) a>b?b:a
int N, G;
int E[MAXN],C[MAXN];
int D[MAXG];
long long S,V;
int main()
{
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
scanf("%d%d", &N, &G);
for(int i = 1; i <= N; ++i)
{
scanf("%d%d", &E[i],&C[i]);
S += C[i];
V += E[i];
}
if( V < G )
{
printf("-1");
return 0;
}
else if ( V == G )
{
printf("%lld",S);
return 0;
}
for(int i=1; i<=G; i++)
D[i] = 10000005;
for(int i=1; i<=N; i++)
for(int j = G; j >= 0; j--)
{
D[j] = min(D[j],D[j-E[i]] + C[i]);
}
printf("%d ",D[G]);
return 0;
}