#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <stack>
#include <list>
#include <set>
#include <algorithm>
#include <utility>
#include <string>
#include <functional>
#include <sstream>
#include <fstream>
using namespace std;
#define FOR(i,a,b) for (i=(a);i<=(b);i++)
#define fori(it,v) for (it=(v).begin();it!=(v).end();it++)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(c) c.begin(),c.end()
#define pf push_front
#define popb pop_back
#define popf pop_front
typedef pair<int,int> ii;
FILE *in,*out;
int U,L,n;
long long q[30050],s[30050],c[30050],a[30050],b[30050];
int ver(long long x)
{
long long maxv,i,p,u;
FOR(i,1,n)
{
c[i]=a[i]-x*b[i];
s[i]=s[i-1]+c[i];
printf("(%lld %lld ) ",c[i],s[i]);
}
printf("\n");
p=1;
u=1;
q[u]=1;
maxv=s[L];
FOR(i,L+1,n)
{
while (p<=u&&i-q[p]+1>U)
p++;
while (p<=u&&s[q[u]]>=s[i])
u--;
/// if (x==832)
// {
// printf("%lld %lld %lld\n",u,q[1],q[2]);
// }
u++;
q[u]=i;
while (p<u&&i-q[p+1]+1>=L)
p++;
maxv=max(maxv,s[i]-s[q[p]-1]);
// printf("CE MM %lld %lld %lld \n",maxv,s[i],s[q[p]-1]);
/* if (i<=L)
{
while (p<=u&&s[i]<=s[q[u]])
u--;
u++;
q[u]=i;
if (i==L)
maxv=max(
continue
}*/
}
printf("%lld %lld\n",x,maxv);
if (maxv>=0)
return 0;
return 1;
}
int main()
{
long long i,rez;
in=fopen("secv3.in","r");
out=fopen("secv3.out","w");
fscanf(in,"%d%d%d",&n,&L,&U);
FOR(i,1,n)
{
fscanf(in,"%lld",&a[i]);
a[i]*=1000;
}
FOR(i,1,n)
fscanf(in,"%lld",&b[i]);
rez=0;
for(i=(((long long)1)<<40);i;i>>=1)
{
rez+=i;
if (ver(rez))
rez-=i;
}
fprintf(out,"%lld.%lld\n",rez/1000,rez%1000);
fclose(in);
fclose(out);
return 0;
}