Pagini recente » Cod sursa (job #621246) | Cod sursa (job #1485097) | Cod sursa (job #2094408) | Cod sursa (job #277430) | Cod sursa (job #2890631)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("secv3.in");
ofstream fout("secv3.out");
int n, l, u, a[200005], b[200005], sum1[200005], sum2[200005];
double ans;
int verif(int st1, int dr1, int st2, int dr2)
{
int val1 = sum1[dr1] - sum1[st1 - 1];
int val2 = sum1[dr2] - sum1[st2 - 1];
int timp1 = sum2[dr1] - sum2[st1 - 1];
int timp2 = sum2[dr2] - sum2[st2 - 1];
if (val1 * timp2 >= val2 * timp1)
return 1;
return 0;
}
int main()
{
fin >> n >> l >> u;
for (int i = 1; i <= n; i++){
fin >> a[i];
sum1[i] = sum1[i - 1] + a[i];
}
for (int i = 1; i <= n; i++) {
cin >> b[i];
sum2[i] = sum2[i - 1] + b[i];
}
deque<int>dq;
for (int i = 1; i <= n; i++) {
while (dq.size() && dq.front() < i - u + 1)
dq.pop_front();
if (i >= l) {
while (dq.size() && verif(i - l + 1, i, dq.front(), i))
dq.pop_back();
dq.push_back(i - l + 1);
ans = max(ans, (double)(sum1[i] - sum1[dq.front() - 1]) / (sum2[i] - sum2[dq.front() - 1]));
}
}
fout << fixed << setprecision(3) << ans;
return 0;
}