Cod sursa(job #465762)

Utilizator laurionLaurentiu Ion laurion Data 25 iunie 2010 13:00:28
Problema Minim2 Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 1 Marime 1.05 kb
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>


using namespace std;

	
int main()
{

 FILE *fin=fopen("minim2.in","r");      
FILE *fout=fopen("minim2.out","w");     // for debugging

        int n;
        float v[100003];
        float a,b,record,timp=0;
       
    fscanf(fin,"%d",&n);

    for ( register int i=0;i!=n;++i )
    {
        fscanf(fin,"%f",&v[i]);
        timp+=v[i];
    }
    fscanf(fin,"%f %f %f",&a,&b,&record);

    sort(v,v+n);


    int k=n-1;
    int count=0;
    float x=a;
    int actions=0;

    while(timp>record || (timp-record)>=0.000001)
    {

        if( v[k]-(v[k]*x) < v[k-1]-(v[k-1]*a) )
        {
            --k;
            count=0;
            x=a;
        }
        else if(++count==10000)
        {
            count=0;
            --k;
            x=a;
        }
        float tmp=v[k];
        v[k]*=x;
        x=b;
        timp-=(tmp-v[k]);
        ++actions;
    }


	fprintf(fout,"%d\n",actions);

	fclose(fout);

	return 0;
}