Pagini recente » Cod sursa (job #636871) | Cod sursa (job #498942) | Cod sursa (job #555513) | Cod sursa (job #699438) | Cod sursa (job #744896)
Cod sursa(job #744896)
#include <cassert>
#include <cstdio>
const int smax=5000, nbmax=10000, inf=1<<30;
int d[smax+nbmax+1];
int main(){
int n, s, sol;
assert(freopen("energii.in", "r", stdin));
assert(scanf(" %d %d ", &n, &s));
for (int i=1; i<=s+nbmax; ++i){
d[i]=inf;
}
for (; n; --n){
int x, y;
assert(scanf(" %d %d ", &x, &y));
for (int i=s+nbmax-x; i>=0; --i){
if (d[i]+y<d[i+x]){
d[i+x]=d[i]+y;
}
}
}
fclose(stdin);
sol=inf;
for (int i=s; i<=s+nbmax; ++i){
if (d[i]<sol){
sol=d[i];
}
}
if (sol==inf){
sol=-1;
}
assert(freopen("energii.out", "w", stdout));
printf("%d\n", sol);
fclose(stdout);
return 0;
}