Pagini recente » Cod sursa (job #444906) | Cod sursa (job #3133856) | Solutii Plicuri | Cod sursa (job #1549761) | Cod sursa (job #1554869)
#include <cstdio>
using namespace std;
int cant[10000005], eng[1002], pret[1002];
int main()
{
int i, j, g, w, min, max;
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
scanf("%d%d", &g, &w);
for(i=0; i<g; i++)
scanf("%d%d", &eng[i], &pret[i]);
cant[0]=1;
max=0;
min=100000000;
for(i=0; i<g; i++){
for(j=max; j>=0; j--){
if(cant[j] && (cant[j+eng[i]]>pret[i]+cant[j] || cant[j+eng[i]]==0)){
cant[j+eng[i]]=pret[i]+cant[j];
if(max<j+eng[i]) max=j+eng[i];
if(j+eng[i]>=w && cant[j+eng[i]]<min) min=cant[j+eng[i]];
}
}
}
printf("%d", min-1);
return 0;
}