Pagini recente » Cod sursa (job #2094542) | Cod sursa (job #1356901) | Cod sursa (job #400131) | Cod sursa (job #495756) | Cod sursa (job #940393)
Cod sursa(job #940393)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in ("energii.in");
ofstream out("energii.out");
int const N=1005;
int const W=5005;
int const M=20000;
int const MAXI=1<<28;
int g,w,e[N],c[N],cost[M];
void init()
{
for(int i=1;i<M;i++)
cost[i]=MAXI;
}
int mini(int x, int y)
{
if(x<y) return x;
return y;
}
int main()
{
in>>g>>w; int sum=0;
for(int i=1;i<=g;i++)
{
in>>e[i]>>c[i];
sum+=e[i];
}
if(sum<w){out<<"-1\n";return 0;}
init();
for(int i=1;i<=g;i++)
for(int j=w;j>=0;j--)
if (cost[j]!=MAXI)
if(cost[j+e[i]]>cost[j]+c[i])
cost[j+e[i]]=cost[j]+c[i];
int minim=MAXI;
for(int i=w;i<M;i++)
minim=mini(cost[i],minim );
out<<minim<<"\n";
return 0;
}