Pagini recente » Cod sursa (job #947751) | Cod sursa (job #352837) | Cod sursa (job #2334016) | Cod sursa (job #2231844) | Cod sursa (job #889742)
Cod sursa(job #889742)
#include<cstdio>
#include<deque>
#define MAX 1005
#define nmax 30005
using namespace std;
deque <int> dq;
int n,l,u;
int c[nmax],t[nmax];
double result;
void read( void )
{
freopen("secv3.in","r",stdin);
scanf("%d%d%d",&n,&l,&u);
for(int i(1); i <= n ; ++i )
scanf("%d",&c[i]);
for(int i(1); i <= n ; ++i )
scanf("%d",&t[i]);
}
bool check ( double m)
{
double s[nmax];
s[0]=0;
dq.clear();
for(int i(1) ; i <= n ; ++i )
s[i]=s[i-1]+1.0*c[i]-m*t[i];
for(int i(1) ; i <= n ; ++i )
{
while(dq.size() && s[ dq.back() ] >= s[i])
dq.pop_back();
dq.push_back(i);
while(i-dq.front() > u-l)
dq.pop_front();
if( s[i] - s[dq.front()] > 0)
return 1;
}
return 0;
}
void solve ( void )
{
double lo=0;
double hi=MAX;
while( lo <= hi )
{
double mid=(lo+hi)/2;
if( check(mid) )
{
result=mid;
lo=mid+0.001;
}
else
{
hi=mid-0.001;
}
}
}
void write( void )
{
freopen("secv3.out","w",stdout);
printf("%f",result);
}
int main()
{
read();
solve();
write();
return 0;
}