Cod sursa(job #2042503)

Utilizator andreigasparoviciAndrei Gasparovici andreigasparovici Data 18 octombrie 2017 18:51:20
Problema Secventa 3 Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <bits/stdc++.h>
using namespace std;

#define NMAX 30001

int n, l, u;

double partialTime[NMAX], partialCost[NMAX];

void read() {
	scanf("%d %d %d ", &n, &l, &u);	

	for(int i = 1; i <= n; i++) {
		int item;
		scanf("%d ", &item);
		partialCost[i] = partialCost[i - 1] + item;
	}

	for(int i = 1; i <= n; i++) {
		int item;
		scanf("%d ", &item);
		partialTime[i] = partialTime[i - 1] + item;
	}
}

double deltaCost(int i, int j) { return partialCost[i] - partialCost[j]; }

double deltaTime(int i, int j) { return partialTime[i] - partialCost[j]; }

double solve() {
	double result = partialCost[l] / partialTime[l];

	int back = 1;

	for(int front = l + 1; front <= n; front++) {

		if(front - l == u) back++;

		double first = deltaCost(front, back - 1) / deltaTime(front, back - 1);
		double second = deltaCost(front, front - l) / deltaTime(front, front - l);

		if(first < second) back = front - l + 1;

		result = max(result, min(first, second));
	}

	return result;
}

int main() {
	freopen("secv3.in", "r", stdin);
	freopen("secv3.out", "w", stdout);

	read();

	printf("%.2f", solve());

	return 0;
}