Pagini recente » Cod sursa (job #2781377) | Cod sursa (job #1764119) | Cod sursa (job #2757892) | Cod sursa (job #2979943) | Cod sursa (job #1059831)
#include<fstream>
#define inf (1<<30)
#define maxn 1003
#define maxg 10003
using namespace std;
ifstream fi("energii.in");
ofstream fo("energii.out");
int i,j,n,w,eg[maxn],ep[maxn];
int a[3][maxg],s=0,m;
inline int min(int a,int b){
if(a<b) return a; else return b;
}
int main(){
fi>>n>>w; m=w;
for(i=1;i<=n;i++){
fi>>eg[i]>>ep[i];
s+=eg[i];
if(eg[i]>m) m=eg[i];
}
for(i=1;i<=2;i++)
for(j=1;j<=m;j++) a[i][j]=inf;
a[1][0]=0; a[2][0]=0;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
if(j>=eg[i]) a[2][j]=min(a[2][j],ep[i]+a[1][j-eg[i]]);
else a[2][j]=min(a[1][j],ep[j]);
for(j=0;j<=w;j++)a[1][j]=a[2][j];
}
if(s>=w) fo<<a[2][m];
else fo<<"-1";
fi.close();
fo.close();
return 0;
}