Pagini recente » Cod sursa (job #1145810) | Cod sursa (job #1022202) | Cod sursa (job #2579905) | Cod sursa (job #2708885) | Cod sursa (job #2502233)
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
#include <cstring>
using namespace std;
long long n,emin,energie[1003],cost[1003],dp[5003],minim;
int main () {
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%lld%lld", &n, &emin);
for(int i=1;i<=n;++i)
scanf("%lld%lld", &energie[i], &cost[i]);
minim=4*1e18;
for(int i=1;i<=n;++i) {
if(energie[i]>=emin) {
minim=min(minim,cost[i]);
continue;
}
for(int j=emin-1;j>=0;--j)
if(dp[j]!=0) {
if(j+energie[i]>=emin)
minim=min(minim,dp[j]+cost[i]);
else {
if(dp[j+energie[i]]!=0)
dp[j+energie[i]]=min(dp[j]+cost[i],dp[j+energie[i]]);
else
dp[j+energie[i]]=dp[j]+cost[i];
}
}
if(dp[energie[i]]==0)
dp[energie[i]]=cost[i];
else
dp[energie[i]]=min(dp[energie[i]],cost[i]);
}
if(minim==4*1e18)
printf("-1");
else
printf("%lld", minim);
return 0;
}