Pagini recente » Cod sursa (job #1841101) | Cod sursa (job #2283688) | Cod sursa (job #2669906) | Cod sursa (job #980472) | Cod sursa (job #1672210)
#include <fstream>
#include <bitset>
#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;
bitset<VAL> ok;
int main()
{
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
mn=2000000000;
ok[0]=1;
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]==1)
{
ok[j+e[i]]=1;
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;
}