Pagini recente » Cod sursa (job #373436) | Cod sursa (job #2680570) | Cod sursa (job #2545049) | Cod sursa (job #3290533) | Cod sursa (job #2837207)
#include <iostream>
#include <fstream>
#include <iomanip>
#include <deque>
using namespace std;
ifstream fin("secv3.in");
ofstream fout("secv3.out");
deque <int>dx;
int c[300005], t[300005], n, l, u;
double aux[300005], s[300005];
int verif(double m)
{
double minn=0;
dx.clear();
for(int i=1; i<=n; i++)
{
aux[i]=c[i]-m*t[i];
s[i]=s[i-1]+aux[i];
}
for(int i=1; i<=n; i++)
{
double sum;
while(!dx.empty() && s[i]<=s[dx.front()])
dx.pop_front();
dx.push_back(i);
if(i-dx.front()+1>u) dx.pop_front();
if(i-dx.front()+1>=l)
{
if(s[i]-s[dx.front()]>=0 && (i!=dx.front() || s[i]>=0)) return 1;
}
}
return 0;
}
int main()
{
fin >> n >> l >> u;
double mnn=0;
for(int i=1; i<=n; i++) fin >> c[i];
for(int i=1; i<=n; i++) fin >> t[i];
double st=0.001, dr=3000000.0, ok=0;
while(dr-st>0.01)
{
double mij=(st+dr)/2;
if(verif(mij))
{
ok=mij; st=mij+0.01;
}
else dr=mij-0.01;
}
fout << fixed << setprecision(2) << ok;
return 0;
}