Pagini recente » Cod sursa (job #2554362) | Cod sursa (job #1717605) | Cod sursa (job #2604995) | Cod sursa (job #2664309) | Cod sursa (job #2502033)
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
int n,emin,energie[1005],cost[1005],dp[10003],suma,minim;
int main () {
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d%d", &n, &emin);
for(int i=1;i<=n;++i)
scanf("%d%d", &energie[i], &cost[i]),suma+=energie[i];
if(suma<emin) {
printf("-1");
return 0;
}
for(int i=1;i<=n;++i) {
if(dp[energie[i]]==0)
dp[energie[i]]=cost[i];
else
dp[energie[i]]=min(dp[energie[i]],cost[i]);
for(int j=10001;j-energie[i]>=0;--j)
if(dp[j-energie[i]]!=0) {
if(dp[j]!=0)
dp[j]=min(dp[j-energie[i]]+cost[i],dp[j]);
else
dp[j]=dp[j-energie[i]]+cost[i];
}
}
minim=1e9;
for(int i=emin;i<=10001;++i)
if(dp[i]!=0)
minim=min(minim,dp[i]);
printf("%d", minim);
return 0;
}
//de la dreapta ;la stanga;