Pagini recente » Cod sursa (job #757395) | Cod sursa (job #1332963) | Cod sursa (job #2312465) | Cod sursa (job #947661) | Cod sursa (job #1068381)
#include <cstdio>
#include <memory.h>
#include <algorithm>
#define Gmax 5005
#define INF 0x3f3f3f3f
using namespace std;
int N,CP,DP[2][Gmax];
void read()
{
scanf("%d%d",&N,&CP);
memset(DP,INF,sizeof(DP));
DP[0][0] = DP[1][0] = 0;
}
void dynamic()
{
int E,Cst,mn = INF;
int l = 1;
for(int i = 1; i <= N; ++i)
{
scanf("%d%d",&E, &Cst);
for(int j = 0; j <= CP; ++j)
if(j + E <= CP)
{
DP[l][j] = min( DP[l^1][j] , DP[l][j]);
if(DP[l][j + E] > DP[l^1][j] + Cst)
DP[l][j + E] = DP[l^1][j] + Cst;
}
else
if(DP[l^1][j] + Cst < mn)
mn = DP[l^1][j] + Cst;
l ^= 1;
}
int ans = min ( DP[l^1][CP], mn);
if(ans != INF)
printf("%d\n",ans);
else
printf("-1\n");
}
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
read();
dynamic();
return 0;
}