Pagini recente » Cod sursa (job #110352) | Cod sursa (job #2670417) | Cod sursa (job #1929154) | Cod sursa (job #1463628) | Cod sursa (job #465815)
Cod sursa(job #465815)
#include<fstream.h>
#define CAUZA1 (v[i].w=='0'&&v[i-1].w=='0'&&(v[i].q-v[i].q*a)<(v[i-1].q-v[i-1].q*a))
#define CAUZA2 (v[i].w=='1'&&v[i-1].w=='0'&&(v[i].q-v[i].q*b)<(v[i-1].q-v[i-1].q*a))
#define CAUZA3 (v[i].w=='1'&&v[i-1].w=='1'&&(v[i].q-v[i].q*b)<(v[i-1].q-v[i-1].q*b))
#define CAUZA4 (v[i].w=='0'&&v[i-1].w=='1'&&(v[i].q-v[i].q*a)<(v[i-1].q-v[i-1].q*b))
using namespace std;
struct spec{float q;char w;};
//char xx[1001];
int main()
{ifstream q("minim2.in");
ofstream w("minim2.out");
int ccn,pos,nc=0,i,n;
float cv[1001],S;
spec v[1001]; //00
float a,b,c;
q>>n;
for(i=1;i<=n;i++)
{q>>v[i].q;
v[i].w='0';
cv[i]=v[i].q;
S=S+v[i].q;}
q>>a>>b>>c;
if(S>=c)
{for(i=1;i<n;i++)
if(v[i].q>v[i+1].q)
{v[0]=v[i];
v[i]=v[i+1];
v[i+1]=v[0];}
S=S-v[n].q;
nc++;
v[n].q=v[n].q*a;
S=S+v[n].q;
v[n].w='1';
for(i=1;i<n;i++)
if(v[i].q>v[i+1].q)
{v[0]=v[i];
v[i]=v[i+1];
v[i+1]=v[0];}
//sort(v+1,v+n+1);}
while(S>=c)
{i=n;
pos=1;
while((v[i].q*b<cv[i]/10000&&v[i].w==1)||(v[i].q*a<cv[i]/10000&&v[i].w==0))
i--;
while((CAUZA1||CAUZA2||CAUZA3||CAUZA4)&&i>1)
i--;
if(i==1)
{i=n;
while((v[i].q*b<cv[i]/10000&&v[i].w==1)||(v[i].q*a<cv[i]/10000&&v[i].w==0))
i--;}
nc++;
S=S-v[i].q;
if(v[i].w=='1')
v[i].q=v[i].q*b;
else
{v[i].q=v[i].q*a;
v[i].w=0;}
S=S+v[i].q;
for(i=1;i<n;i++)
if(v[i].q>v[i+1].q)
{v[0]=v[i];
v[i]=v[i+1];
v[i+1]=v[0];}}}
w<<nc;
return 0;}