Pagini recente » Cod sursa (job #1638980) | Cod sursa (job #2413698) | Cod sursa (job #539048) | Cod sursa (job #1639363) | Cod sursa (job #304014)
Cod sursa(job #304014)
#include <fstream>
using namespace std;
ifstream f1 ("energii.in");
ofstream f2 ("energii.out");
int g,w;
int energie[1001],cost[1001];
#define INF 100008
#define VAR 10001
int e[VAR],t=0;
char uz[VAR];
void citire()
{
f1>>g;
f1>>w;
for(int i=1;i<=g;i++)
{
f1>>energie[i]>>cost[i];
t=t+energie[i];
}
}
void marcare()
{
for(int i=1;i<VAR;i++)
e[i]=INF;
}
void rezolvare()
{
int en,i;
e[0]=0;
for(en=1;en<=g;en++)
{
for(i=w-1;i>=0;i--)
if(e[i]!=INF)
if(e[i+energie[en]]>e[i]+cost[en])
e[i+energie[en]]=e[i]+cost[en];
}
}
int scrie()
{
int i,max=INF;
for(i=w;i<=5500;i++)
if(e[i]<=max)
max=e[i];
if(max==INF)
return -1;
else
return max;
}
int main()
{
citire();
marcare();
if(t<w)
{
f2<<"-1";
return 0;
}
rezolvare();
f2<<scrie();
return 0;
}