Pagini recente » Cod sursa (job #1074096) | Cod sursa (job #1551311) | Cod sursa (job #831046) | Cod sursa (job #1131457) | Cod sursa (job #2720519)
#include <fstream>
#include <deque>
#include <iostream>
#include <iomanip>
using namespace std;
int n, L, R;
int cost[30001];
int timp[30001];
int spc[30001], spt[30001];
double Max = 0.00;
void read() {
int i;
ifstream f("secv3.in");
f >> n >> L >> R;
for (i = 1; i <= n; i++)
f >> cost[i];
for (i = 1; i <= n; i++)
f >> timp[i];
f.close();
}
void solve() {
int i;
double x, y, z;
deque<int> dq;
for (i = 1; i <= n; i++) {
spc[i] = spc[i - 1] + cost[i];
spt[i] = spt[i - 1] + timp[i];
dq.push_back(i);
if (dq.size() >= L) {
if ((spc[dq.back()] - spc[dq.front() - 1]) * 1.0 / (spt[dq.back()] - spt[dq.front() - 1]) > Max)
Max = (spc[dq.back()] - spc[dq.front() - 1]) * 1.0 / (spt[dq.back()] - spt[dq.front() - 1]);
while (dq.size() >= L) {
x = (spc[dq.back()] - spc[dq.front() - 1]) * 1.0 / (spt[dq.back()] - spt[dq.front() - 1]);
y = (spc[dq.back()] - spc[dq.front()]) * 1.0 / (spt[dq.back()] - spt[dq.front()]);
if (x < y)
dq.pop_front();
else break;
}
if (dq.size() >= R)
dq.pop_front();
}
}
x = (spc[dq.back()] - spc[dq.front() - 1]) * 1.0 / (spt[dq.back()] - spt[dq.front() - 1]);
if (x > Max)
Max = x;
}
void output() {
ofstream g("secv3.out");
g << setprecision(2) << fixed << Max;
g.close();
}
int main() {
read();
solve();
output();
return 0;
}