Pagini recente » Cod sursa (job #884299) | Cod sursa (job #2186303) | Cod sursa (job #2837444) | Cod sursa (job #834872) | Cod sursa (job #2883181)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 3e4 + 5;
int spv[N], spc[N];
bool cmp(int l1, int r1, int l2, int r2) {
ll a = spv[r1] - spv[l1 - 1];
ll b = spc[r1] - spc[l1 - 1];
ll c = spv[r2] - spv[l2 - 1];
ll d = spc[r2] - spc[l2 - 1];
return a * d >= b * c;
}
int main() {
ifstream cin("secv3.in");
ofstream cout("secv3.out");
int n, l, u;
cin >> n >> l >> u;
for (int i = 1; i <= n; ++i) {
cin >> spv[i];
spv[i] += spv[i - 1];
}
for (int i = 1; i <= n; ++i) {
cin >> spc[i];
spc[i] += spc[i - 1];
}
cin.close();
deque<int> dq;
double ans = 0;
for (int i = 1; i <= n; ++i) {
while (!dq.empty() && dq.front() < i - u + 1)
dq.pop_front();
if (i >= l) {
while (!dq.empty() && cmp(i - l + 1, i, dq.back(), i))
dq.pop_back();
dq.push_back(i - l + 1);
ans = max(ans, (double) (spv[i] - spv[dq.front() - 1]) / (spc[i] - spc[dq.front() - 1]));
}
}
cout << fixed << setprecision(2) << ans << "\n";
cout.close();
return 0;
}