Cod sursa(job #2066129)

Utilizator MihalachiRazvanMihalachi Razvan MihalachiRazvan Data 14 noiembrie 2017 18:32:04
Problema Secventa 3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <fstream>
#include <math.h>
#include <iostream>
using namespace std;
ifstream fin("secv3.in");
ofstream fout("secv3.out");
struct numar
{
    int t,c;
}a[30001];
int n,l,u,start=0;
int main()
{
    fin>>n>>l>>u;
    float s1,s2=0,s3=0,s4=0,maxim=0;
    s1=s2;
    for(int i=1;i<=n;++i)
        fin>>a[i].c;
         for(int i=1;i<=n;++i)
        fin>>a[i].t;
      fout<<maxim;
      for(int i=1;i<=n;++i)
      {
          if(i>l)
          {
                if(maxim<(float)s1/s2)
                    maxim=(float)s1/s2;
                   s3=s3+a[i-l].c;
                   s4=s4+a[i-l].t;
                  if((float)(s1-s3+a[i].c)/(s2-s4+a[i].t)>(float)(s1+a[i].c)/(s2+a[i].t))
                  {
                      start=i-l+1;
                      s1=s1-s3+a[i].c;
                      s2=s2-s4+a[i].t;
                      s3=s4=0;
                  }
                  else if(i-start>u)
                  {
                    start=i-l+1;
                      s1=s1-s3;
                      s2=s2-s4;
                      s3=s4=0;
                  }
                  else
                      {
                          s1=s1+a[i].c;
                          s2=s2+a[i].t;
                      }
            }
          else
              {if(start==0)
               start=i;
            s1=s1+a[i].c;
            s2=s2+a[i].t;}
      }
        if(maxim<(float)s1/s2)
                    maxim=(float)s1/s2;
      fout<<maxim;
    return 0;
}