Cod sursa(job #3315295)

Utilizator MihaiDraghiciMIHAI DRAGHICI MihaiDraghici Data 13 octombrie 2025 17:47:09
Problema Secventa 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<bits/stdc++.h>

using namespace std;

ifstream fin("secv3.in");
ofstream fout("secv3.out");

vector < double > spc(30001);
vector < double > spt(30001);
vector < int > c(30001);
vector < int > t(30001);
deque < int > dq;

int main() {
	int n, l, u;

	fin >> n >> l >> u;

	for (int i = 1; i <= n; i++) {
		fin >> c[i];
		spc[i] = spc[i - 1] + c[i];
	}
	for (int i = 1; i <= n; i++) {
		fin >> t[i];
		spt[i] = spt[i - 1] + t[i];
	}

	double maxi = 0;
	for (int i = l; i <= n; i++) {

		while (!dq.empty() && dq.front() < i - u) {
			dq.pop_front();
		}
		while (!dq.empty() && (spc[dq.back()] - spt[dq.back()] * maxi) > (spc[i - l] - spt[i - l] * maxi)) {
			dq.pop_back();
		}

		dq.push_back(i - l);

		double pe = (spc[i] - spc[dq.front()]) / (spt[i] - spt[dq.front()]);
		if (pe > maxi) {
			maxi = pe;
		}
	}

	fout << fixed << setprecision(2) << maxi << '\n';

	return 0;
}