Pagini recente » Cod sursa (job #1539138) | Cod sursa (job #241415) | Cod sursa (job #2102624) | Cod sursa (job #2299618) | Cod sursa (job #389320)
Cod sursa(job #389320)
#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.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();
}
while(!dq.empty())
{
if((double)(c[n]-c[dq.front()])/(t[n]-t[dq.front()])>Max)
Max=(double)(c[n]-c[dq.front()])/(t[n]-t[dq.front()]);
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;
}