Pagini recente » Cod sursa (job #2751846) | Cod sursa (job #1210018) | Cod sursa (job #1695767) | Cod sursa (job #85597) | Cod sursa (job #70869)
Cod sursa(job #70869)
#include <stdio.h>
//#include <conio.h>
int i,j,k,g,w,x,y,a[1000],b[1000],min,st[1000];
void init() {st[k]=-1;}
int Am_Succ()
{ if (st[k]<2)
{st[k]++;
return 1;
}
else return 0;
}
int E_Valid()
{int i,p=0;
for (i=1;i<=k;i++)
p+=b[i]*st[i];
if (p>=min) return 0;
return 1;
}
int solutie()
{if (k==x) return 1;
else return 0;
}
void tipar()
{int i,s=0,p=0;
for (i=1;i<=x;i++)
{s+=a[i]*st[i];
p+=b[i]*st[i];
}
if ((s>=w) && (p<min)) min=p;
}
void back()
{int as;
k=1;
while (k>0)
{do {} while ((as=Am_Succ()) && !E_Valid());
if (as)
if (solutie()) tipar();
else {k++;init();}
else k--;
}
}
int main()
{
FILE *fin,*fout;
//clrscr();
fin=fopen("energii.in","r");
fscanf(fin,"%d",&g);
fscanf(fin,"%d",&w);
for (i=1;i<=g;i++)
{fscanf(fin,"%d",&x);
fscanf(fin,"%d",&y);
j=1;
while ((j<=i-1) && (a[j]<x)) j++;
for (k=i-1;k>=j;k--)
{a[k+1]=a[k];
b[k+1]=b[k];
}
a[j]=x;
b[j]=y;
}
fclose(fin);
/*
for (i=1;i<=g;i++)
printf("%d ",a[i]);
printf("\n");
for (i=1;i<=g;i++)
printf("%d ",b[i]);
printf("\n");
*/
i=1;
while ((i<=g) && (a[i]<w)) i++;
x=i-1;
min=b[x+1];
for (i=x+1;i<=g;i++)
if (min>b[i]) min=b[i];
//printf("%d %d",k,min);
back();
//printf("%d",min);
fout=fopen("energii.out","w");
fprintf(fout,"%d",min);
fclose(fout);
return 0;
}