Cod sursa(job #2064124)

Utilizator MihalachiRazvanMihalachi Razvan MihalachiRazvan Data 11 noiembrie 2017 20:19:10
Problema Secventa 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.58 kb
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream fin("secv3.in");
ofstream fout("secv3.out");
struct numar
{
    int t,c;
}a[30000];

int n,l,u;
int main()
{
    fin>>n>>l>>u;
    int s1=0,s2=0,s3,s4;
    float s,maxim=0.0;
    for(int i=1;i<=n;i++)
        {fin>>a[i].c;
         s1=s1+a[i].c;}
         for(int i=1;i<=n;i++)
        {fin>>a[i].t;
        s2=s2+a[i].t;}
       int m=n;
       s=(float)s1/s2;
       int finish=n,start=1;
       int auxs=0,auxf=0,ver=1;
       while(finish-start+1>l&&ver==1)
       {
           if(start==auxs&&finish==auxf)
            ver=0;
           auxs=start;
           auxf=finish;
           if(finish-start+1<=u&&finish-start+1>=l)
            if(s>maxim)
            maxim=s;
           m=(start+finish)/2;
               s1=0;s2=0;s3=0;s4=0;
               for(int i=start;i<=m&&m>0;i++)
               {
                   s1=s1+a[i].c;
                   s2=s2+a[i].t;
               }
               for(int j=m;j<=finish&&m>0;j++)
               {
                   s3=s3+a[j].c;
                   s4=s4+a[j].t;
               }
               if((float)s1/s2>(float)s3/s4)
               {
                   s=(float)s1/s2;
                   finish=m;
               }
               else
               {
                   s=(float)s3/s4;
                   start=m;
                   finish=n;
               }
        }
   if(l==1)
    if(maxim<(float)a[finish].c/a[finish].t)
    maxim=(float)a[finish].c/a[finish].t;
      fout<<maxim;
    return 0;
}