Pagini recente » Cod sursa (job #2654103) | Cod sursa (job #1548423) | Cod sursa (job #2571578) | Cod sursa (job #1927323) | Cod sursa (job #389334)
Cod sursa(job #389334)
#include<queue>
#include<stdio.h>
using namespace std;
#define DIM 30010
int n,l,u;
int c[DIM],t[DIM];
double calc()
{
deque <int> dq;
dq.push_back(0);
double Max=-(1<<30);
for(int i=l;i<=n;i++)
{
if((double)(c[i]-c[dq.back()])/(t[i]-t[dq.back()])>Max)
Max=(double)(c[i]-c[dq.back()])/(t[i]-t[dq.back()]);
if((double)(c[i]-c[dq.front()])/(t[i]-t[dq.front()])>Max)
Max=(double)(c[i]-c[dq.front()])/(t[i]-t[dq.front()]);
while(!dq.empty()&&(double)c[dq.back()]/t[dq.back()]<=(double)c[i-l+1]/t[i-l+1])
dq.pop_back();
dq.push_back(i-l+1);
if(dq.front()==i-u)
dq.pop_front();
}
return Max;
}
int main()
{
freopen("secv3.in","r",stdin);
freopen("secv3.out","w",stdout);
scanf("%d%d%d",&n,&l,&u);
for(int i=1;i<=n;i++)
{
scanf("%d",&c[i]);
c[i]+=c[i-1];
}
for(int i=1;i<=n;i++)
{
scanf("%d",&t[i]);
t[i]+=t[i-1];
}
printf("%.2lf\n",calc());
return 0;
}