Pagini recente » Cod sursa (job #1093073) | Cod sursa (job #2360194) | Cod sursa (job #1988751) | Cod sursa (job #2353776) | Cod sursa (job #3356209)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("energii.in");
ofstream cout("energii.out");
int e[10001], c[10001];
vector<int> cost(50000005, 10000005);
int main()
{
int g, w, smax, mini=10000005;
cin>>g>>w;
for(int i=1; i<=g; i++)
cin>>e[i]>>c[i];
cost[0]=0;
smax=0;
for(int i=1; i<=g; i++){
for(int j=smax; j>=0; j--)
if(cost[j]!=10000005 && j+e[i]<=50000005){
//cout<<" cost[j] initial: "<<cost[j];
if(cost[j]+c[i]<cost[j+e[i]]){
cost[j+e[i]]=cost[j]+c[i];
if(cost[j+e[i]]<mini && j+e[i]>=w)
mini=cost[j+e[i]];
}
//cout<<" cost[j] schimbat: "<<cost[j+e[i]]<<endl;
}
smax+=e[i];
}
/*
cout<<"smax: "<<smax<<endl;
for(int i=0; i<=smax; i++)
cout<<i<<" "<<cost[i]<<endl;
*/
if(mini!=10000005)
cout<<mini;
else
cout<<-1;
return 0;
}