Pagini recente » Cod sursa (job #832253) | Cod sursa (job #815577) | Cod sursa (job #2828003) | Cod sursa (job #1525960) | Cod sursa (job #3211689)
#include <fstream>
#include <deque>
using namespace std;
ifstream cin("secv3.in");
ofstream cout("secv3.out");
int a[30005], b[30005], l, u, n, i;
deque<int> q;
bool search(double val)
{
double s[30005];
for (int k = 1; k <= n; k++)
s[k] = s[k - 1] + a[k] - b[k] * val;
for (int k = l; k <= n; k++)
{
while (!q.empty() && s[k - l + 1] < s[q.back()])
q.pop_back();
q.push_back(k - l + 1);
if (k - q.front() + 1 > u)
q.pop_front();
if (s[k] - s[q.front()] > 0)
{
q.clear();
return true;
}
}
q.clear();
return false;
}
int main()
{
cin >> n >> l >> u;
for (i = 1; i <= n; i++)
cin >> a[i];
for (i = 1; i <= n; i++)
cin >> b[i];
double st = 0, dr = 30000, mij = 0, sol = 0;
while (dr - st > 0.01)
{
mij = (dr + st) / 2;
if (search(mij))
sol = mij, st = mij;
else
sol = mij, dr = mij;
}
cout << int(sol * 100) / 100.0;
}