Pagini recente » Cod sursa (job #1348724) | Cod sursa (job #1374612) | Cod sursa (job #203866) | Cod sursa (job #271007) | Cod sursa (job #1335541)
#include<cstdio>
using namespace std;
int i, cost[30002], vmax, prod[30002], a[30002], n, eg, costmn, j;
bool ok[30002];
int min(int a, int b){if (a<=b) return a; else return b;}
int main(){
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d%d", &n, &eg);
for (i=1;i<=n;i++) scanf("%d%d", &prod[i], &cost[i]);
vmax=0; ok[0]=true; a[0]=0; costmn=999999999;
for (i=1;i<=2*n+2;i++) a[i]=999999999;
for (i=1;i<=n;i++) for (j=vmax;j>=0;j--) if (ok[j]==true) {
if (j+prod[i]>=eg) {
if (costmn>a[j]+cost[i]) costmn=a[j]+cost[i];
} else {
ok[j+prod[i]]=true;
if (vmax<j+prod[i]) vmax=min(j+prod[i], eg);
a[j+prod[i]]=min(a[j]+cost[i], a[j+prod[i]]);
}
}
if (costmn==999999999) printf("-1\n"); else printf("%d\n", costmn);
return 0;
}