Pagini recente » Cod sursa (job #135127) | Cod sursa (job #2559360) | Cod sursa (job #541262) | Cod sursa (job #796433) | Cod sursa (job #2066063)
#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;
}