Pagini recente » Cod sursa (job #3278654) | Cod sursa (job #2985474) | IAP #6: Arhiva educationala | Cod sursa (job #3141101) | Cod sursa (job #3141095)
#include <bits/stdc++.h>
using namespace std;
int d[30001], t[30001];
bool Deque(double k, int n, int p, int u){
deque <int> deq;
for(int i = p; i <= n; i++){
if(deq.front() < i - u)
deq.pop_front();
while(!deq.empty() && 1.0 * d[deq.back()] - k * t[deq.back()] >= 1.0 * deq[i - p] - k * t[i - p])
deq.pop_back();
deq.push_back(i - p);
if(1.0 * d[deq.front()] - k * t[deq.front()] < 1.0 * d[i] - k * t[i])
return true;
}
return false;
}
int main() {
int i, n, l, u, j;
freopen("secv3.in", "r", stdin);
freopen("secv3.out", "w", stdout);
scanf("%d%d%d", &n, &l ,&u);
for(i = 1; i <= n; i++){
scanf("%d", &d[i]);
d[i] += d[i - 1];
}
for(i = 1; i <= n; i++){
scanf("%d", &t[i]);
t[i] += t[i - 1];
}
double pas;
double ans;
for(ans = 0.0, pas = 1 << 10, j = 0; j < 20; j++, pas /= 2.0){
if(Deque(ans + pas, n, l, u))
ans += pas;
}
printf("%.2lf", ans);
return 0;
}