Pagini recente » Cod sursa (job #1155927) | Cod sursa (job #2526948) | Cod sursa (job #2077116) | Cod sursa (job #271308) | Cod sursa (job #1746412)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int n,w,i,j,maxs,sol,c[50000001],v[50000001],val,Max,Min=100000001;
struct data{
int e,c;
}x[1001];
int main(){
fin>>n>>w;
for (i=1;i<=n;i++)
fin>>x[i].e>>x[i].c;
fin.close();
maxs=0;v[0]=1;c[0]=0;
for (i=1;i<=n;i++){
val=maxs;Max=0;
while(val>=0){
if (v[val]==1)
if (v[val+x[i].e]==0){
v[val+x[i].e]=1;
c[val+x[i].e]=c[val]+x[i].c;
if (Max<val+x[i].e) Max=val+x[i].e;
if (val+x[i].e>=w){
if (Min>c[val+x[i].e]) Min=c[val+x[i].e];
}
}
else
if (c[val+x[i].e]>c[val]+x[i].c) {
c[val+x[i].e]=c[val]+x[i].c;
if (val+x[i].e>=w && Min>c[val+x[i].e]) Min=c[val+x[i].e];
}
val--;
}
if (maxs<Max) maxs=Max;
}
if (Min==100000001) fout<<"-1";
else
fout<<Min;
fout.close();
return 0;
}