Pagini recente » Cod sursa (job #958972) | Cod sursa (job #130435) | Cod sursa (job #2012810) | Cod sursa (job #1545101) | Cod sursa (job #1672208)
#include <fstream>
#include <cstdio>
#define NM 1005
#define VAL 10000005
using namespace std;
int N, G, i, mn;
int c[NM], e[NM];
int dp[VAL], s, j;
bool ok[VAL];
int main()
{
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
mn=2000000000;
ok[0]=true;
scanf("%d %d", &G, &N);
for (i=1; i<=G; i++)
{
scanf("%d %d", &e[i], &c[i]);
s+=e[i];
}
if (s<N)
printf("%d\n", -1);
else
{
for (i=1; i<=G; i++)
{
for (j=s-e[i]; j>=0; j--)
{
if (ok[j]==true)
{
ok[j+e[i]]=true;
if (dp[j+e[i]]==0)
dp[j+e[i]]=dp[j]+c[i];
else
dp[j+e[i]]=min(dp[j]+c[i], dp[j+e[i]]);
if (j+e[i]>=N)
mn=min(mn, dp[j+e[i]]);
}
}
}
printf("%d\n", mn);
}
return 0;
}