Pagini recente » Cod sursa (job #530129) | Cod sursa (job #1142124) | Cod sursa (job #1932076) | Cod sursa (job #1681231) | Cod sursa (job #562720)
Cod sursa(job #562720)
#include<fstream.h>
#include<iostream.h>
ifstream f("energii.in");
ofstream g("energii.out");
int sol[200],s=0,min,min1;int i,nr,w,e[200],c[200];
int valid(int k)
{
int i;
for(i=1;i<k;i++)
{
if(sol[i]==sol[k]) return 0;
}
return 1;
}
int back(int k,int cost,int p)
{
if(p==w)
{
if(cost<min) min=cost;
cout<<"1";
}
else{
sol[k]=0;
while((p<w)&&(sol[k]<=nr))
{
sol[k]++;
if(valid(k)){
p=p+e[sol[k]];
cost+=c[sol[k]];
back(k+1,cost,p);
p=p-e[sol[k]];
cost-=c[sol[k]];
}
}
}}
main()
{
f>>nr;
f>>w;
int ok=1;
for(i=1;i<=nr;i++)
{
f>>e[i];
f>>c[i];
s+=e[i];
if(e[i]==w) {ok=0;min1=c[i];}
min+=c[i];
}
if(s<w) g<<"-1";
if(ok==0) {
for(i=1;i<=nr;i++)
if((e[i]==w)&&(c[i]<min1))min1=c[i];
g<<min1;
}
else
{
back(1,0,0);
g<<min;}
}