Pagini recente » Cod sursa (job #2840087) | Cod sursa (job #2105345) | Cod sursa (job #2114151) | Cod sursa (job #2426084) | Cod sursa (job #2333528)
#include<bits/stdc++.h>
#define pb push_back
#define x first
#define y second
using namespace std;
ifstream fin("secv3.in");
ofstream fout("secv3.out");
const int DN=1e5+5;
int n,l,u;
double st,dr,mij,sum[DN],val;
pair<double,double>a[DN];
deque<pair<double,int> >d;
int vf(double z)
{
for(int i=1;i<=n;i++)
{
val=a[i].x-a[i].y*z;
sum[i]=sum[i-1]+val;
}
d.clear();
for(int i=1;i<=n;i++)
{
if(i>=l)
{
while(1)
{
if(d.empty())
break;
if(sum[i-l]>d.back().x)
break;
d.pop_back();
}
d.pb({sum[i-l],i});
}
while(1)
{
if(d.empty())
break;
if(d.front().y>=i-u)
break;
d.pop_front();
}
if(!d.empty())
if(sum[i]-d.front().x>=0)
return 1;
}
return 0;
}
int main()
{
fin>>n>>l>>u;
for(int i=1;i<=n;i++)
fin>>a[i].x;
for(int i=1;i<=n;i++)
fin>>a[i].y;
st=0;
dr=1000;
while(dr-st>1e-4)
{
mij=(st+dr)/2;
if(vf(mij))
st=mij;
else
dr=mij;
}
st=(st+dr)/2;
fout<<fixed<<setprecision(2)<<st;
}