Cod sursa(job #2891048)

Utilizator minecraft3Vintila Valentin Ioan minecraft3 Data 17 aprilie 2022 13:32:02
Problema Secventa 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.95 kb
#include <bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
// #pragma GCC optimize("Ofast")
// #pragma GCC target("avx,avx2,fma")

using namespace std;
// using namespace __gnu_pbds;
// template<typename T>
// using oset = tree<T, null_type, less<T>,
				  // rb_tree_tag, tree_order_statistics_node_update>;

#define nl cout.put('\n')
using ll = long long;
using ull = unsigned long long;

#ifdef Wi_TEST
	template<typename T1, typename T2>
	ostream& operator<<(ostream& out, pair<T1,T2> p) {
		out << "(" << p.first << ", " << p.second << ")";
		out.flush(); return out;
	}
	void DEB() { cerr << "]" << endl; }
	template<typename H, typename ... T>
	void DEB(H h, T... t) {
		cerr << h;
		if(sizeof...(t)) cerr << ", ";
		DEB(t...);
	}
	#define deb(...) cerr << "LINE(" << __LINE__ << ") -> [" << \
						     #__VA_ARGS__ << "]: [", DEB(__VA_ARGS__)
#else
	#define deb(...) 87105
#endif

const long long MOD = 1000000007, MOD2 = 998244353;
int lx[] = {0, 1, 0, -1}, ly[] = {1, 0, -1, 0};

#define N 30005

ll x[N], y[N], n, l, u;

void solve() {
	ifstream fin("secv3.in");
	ofstream fout("secv3.out");
	fin >> n >> l >> u;
	for (ll i = 1; i <= n; ++i) {
		fin >> x[i];
		x[i] += x[i - 1];
	}
	for (ll i = 1; i <= n; ++i) {
		fin >> y[i];
		y[i] += y[i - 1];
	}
	double rez = 0;
	deque<ll> dq;
	for (ll i = 1; i <= n; ++i) {
		// Scoatem ce expira
		while (!dq.empty() && dq.front() < i - u + 1)
			dq.pop_front();
		if (i >= l) { // avem minimul necesar
			while (!dq.empty() &&
				   (x[i] - x[i - l]) * (y[i] - y[dq.back() - 1]) >= 
						(x[i] - x[dq.back() - 1]) * (y[i] - y[i - l]))
				dq.pop_back();
			dq.push_back(i - l + 1);
			rez = max(rez, (double)(x[i] - x[dq.front() - 1]) /
						   (double)(y[i] - y[dq.front() - 1]));
		}
	}
	fout << fixed << setprecision(3) << rez;
}

int main() {
	ios_base::sync_with_stdio(false);
#ifndef Wi_TEST
	cin.tie(0);
#endif
	
	int t = 1;
	// cin >> t;
	for(int i = 1; i <= t; ++i) {
		solve();
	}
}