Pagini recente » Cod sursa (job #1885851) | Cod sursa (job #1086432) | Cod sursa (job #2760633) | Cod sursa (job #1346335) | Cod sursa (job #935661)
Cod sursa(job #935661)
#include <cstdio>
#include <cmath>
#define EPS 1e-4
#define N 30001
int a[N], b[N];
int deque[N];
int l, r;
double S[N];
int L, R, n;
void remove(int p) {
while (l <= r && deque[l] == p - R)
++l;
}
void insert(int p) {
while (l <= r && S[p - L] < S[ deque[r] ])
--r;
deque[++r] = p - 1;
}
bool isOk(double v) {
int i;
S[0] = 0;
for (i = 1; i <= n; ++i)
S[i] = S[i - 1] + a[i] - double(b[i]) * v;
l = 1; r = 0;
for (i = 1; i <= n; ++i) {
remove(i);
insert(i);
if (S[i] - S[ deque[l] ] > 0)
return true;
}
return false;
}
void solve() {
double i, cnt;
for (i = 0.0, cnt = (double)(1 << 28); cnt > EPS ; cnt /= 2.0)
if (i + cnt <= (1 << 28) && isOk(i + cnt))
i += cnt;
printf ("%.2lf\n", i);
}
int main() {
freopen ("secv3.in", "r", stdin);
freopen ("secv3.out", "w", stdout);
scanf ("%d %d %d\n", &n, &L, &R);
int i;
for (i = 1; i <= n; ++i)
scanf ("%d ", &a[i]);
for (i = 1; i <= n; ++i)
scanf ("%d ", &b[i]);
solve();
}