Pagini recente » Cod sursa (job #4898) | Cod sursa (job #409970) | Cod sursa (job #3278891) | Cod sursa (job #815877) | Cod sursa (job #2066129)
#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;
}