Cod sursa(job #2096035)

Utilizator aeromaniaXRadoi Iulian aeromaniaX Data 28 decembrie 2017 14:45:06
Problema Minim2 Scor 0
Compilator cpp Status done
Runda vacanta_11_2 Marime 1.17 kb
#include <bits/stdc++.h>
using namespace std;
int n,x,nr;
bool ap[100001];

double a[100001],s,A,B,record;
int main()
{
    freopen("minim2.in","r",stdin);
    freopen("minim2.out","w",stdout);


    scanf("%d",&n);

    for(int i=1;i<=n;i++)
    {
        scanf("%d",&x);
        a[i]=x;
        s+=a[i];
    }
    scanf("%lf%lf%lf",&A,&B,&record);

    if(record>s){
            printf("0");
            return 0;
    }
   // printf("%f %f\n",s,record);
    sort(a+1,a+n+1);

while(record<=s){
    for(int i=n;i>=1;i--)
    {
        s=s-a[i];
        if(!ap[i])
        {
            ap[i]=1;
            a[i]=a[i]*A;
            s=s+a[i];
        }
        else{
            a[i]=a[i]*B;
            s=s+a[i];
        }
        nr++;
        if(s<record) {
              // printf("da");
               break;
        }

        if(ap[i-1]==0)
        {
            if((a[i-1]-a[i-1]*A)<=(a[i]-a[i]*B))
                i++;

        }
        else
        {
            if((a[i-1]-a[i-1]*B)<=(a[i]-a[i]*B))
                i++;

        }
    }
}
   // printf("%lf  %lf\n",s,record);

    printf("%d\n",nr);
    return 0;

}