Cod sursa(job #2066063)

Utilizator MihalachiRazvanMihalachi Razvan MihalachiRazvan Data 14 noiembrie 2017 18:01:26
Problema Secventa 3 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.55 kb
#include <iostream>
#include <fstream>
#include <math.h>
#include <deque>
using namespace std;
ifstream fin("secv3.in");
ofstream fout("secv3.out");
std::deque <int> deqc;
struct numar
{
    int t,c;
}a[30000];
float suma(int y,int x)
{
    int s1,s2=0;s1=s2;
    for(int j=y;j<=x;j++)
    {
        s1=s1+a[j].c;
        s2=s2+a[j].t;
    }
    return (float)s1/s2;
}
int n,l,u,start;
int main()
{
    fin>>n>>l>>u;
    float s=0,maxim=0;
    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<suma(deqc.front(),deqc.back()))
                    maxim=suma(deqc.front(),deqc.back());
                  start=i-l+1;
                  if(suma(start,i)>suma(deqc.front(),i))
                  {
                      while(!deqc.empty()&&start!=deqc.front())
                        deqc.pop_front();
                        deqc.push_back(i);
                  }
                  else if(i-deqc.front()>u)
                  {
                    while(!deqc.empty()&&start!=deqc.front())
                        deqc.pop_front();
                        deqc.push_back(i);

                  }
                  else
                      deqc.push_back(i);
              }
          else
              deqc.push_back(i);
      }
      if(maxim<suma(deqc.front(),deqc.back()))
                    maxim=suma(deqc.front(),deqc.back());
      fout<<maxim;
    return 0;
}