Pagini recente » Cod sursa (job #994807) | Cod sursa (job #1167566) | Cod sursa (job #2926856) | Cod sursa (job #345061) | Cod sursa (job #2045406)
#include <stdio.h>
#include <stdlib.h>
#define NMAX 100000
int d[1 + NMAX];
int v[1 + NMAX], t[1 + NMAX];
int main(){
int n, l, u;
FILE *f = fopen("secv3.in", "r");
fscanf(f, "%d%d%d", &n, &l, &u);
for (int i = 0; i < n; ++i)
fscanf(f, "%d", &v[i]);
for (int i = 1; i < n; ++i)
v[i] += v[i - 1];
for (int i = 0; i < n; ++i)
fscanf(f, "%d", &t[i]);
for (int i = 1; i < n; ++i)
t[i] += t[i - 1];
int st = 0, dr = 0;
double maxim = 1.0 * v[l - 1] / t[l - 1];
for (int i = l; i < n; ++i) {
if (st <= dr && d[st] <= i - u)
++st;
while (st <= dr && 1.0 * (v[i] - v[d[dr] - 1]) / (t[i] - t[d[dr] - 1]) < 1.0 * (v[i] - v[i - l]) / (t[i] - t[i - l]))
--dr;
d[++dr] = i - l + 1;
if (1.0 * (v[i] - v[d[dr] - 1]) / (t[i] - t[d[dr] - 1]) > maxim)
maxim = 1.0 * (v[i] - v[d[dr] - 1]) / (t[i] - t[d[dr] - 1]);
}
fclose(f);
f = fopen("secv3.out", "w");
fprintf(f, "%.2lf", maxim);
fclose(f);
return 0;
}