Pagini recente » Cod sursa (job #2844270) | Cod sursa (job #478174) | Cod sursa (job #1508289) | Cod sursa (job #1482907) | Cod sursa (job #1908348)
#include <cstdio>
#include <cstring>
#define maxW 5001
#define INF 0x3f3f3f3f
using namespace std;
int d[maxW+1];
inline int min(int a, int b){ return (a<b ? a:b);}
int main(){
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
int G, W, EG, CG, dr, ans;
scanf("%d%d", &G, &W);
memset(d, 0xff, sizeof(d));
d[0]=0;
dr=0;
ans=INF;
for (int i=1; i<=G; i++){
scanf("%d%d", &EG, &CG);
for (int j=dr; j>=0; j--)
if (d[j]!=-1){
if (j+EG>=W){
dr=W;
ans=min(ans, d[j]+CG);
}else{
if (dr<j+EG) dr=j+EG;
d[j+EG]=min(d[j+EG], d[j]+CG);
}
}
}
if (ans==INF)
printf("-1\n");
else printf("%d\n", ans);
return 0;
}