Cod sursa(job #21245)

Utilizator pandaemonAndrei Popescu pandaemon Data 23 februarie 2007 00:36:57
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <fstream.h>
#include <iostream.h>

fstream f("energii.in",ios::in),tip("energii.out",ios::out);

int *sol,*e,*c,w,g,i,en;
long min=3000000;

int init()
{
f>>g; f>>w;

sol=new int[g+1];
e=new int[g+1];
c=new int[g+1];
for(i=1;i<=g;i++)
{f>>e[i]; f>>c[i];}
}

inline comp()
{
int s=0,en=0;
for (i=1;i<=g;i++)
if(sol[i]) {s+=c[i]; en+=e[i];}

if(min>s && en>=w)
min=s;
}

int back(int k)
{
if(k==g+1) comp();
else 
{sol[k]=-1;
while(sol[k]<1)
{sol[k]++; back(k+1);}}
}

int main()
{init();
back(1);
if(min!=3000000)
tip<<min;
else tip<<-1;}