Cod sursa(job #2628553)

Utilizator gasparrobert95Gaspar Robert Andrei gasparrobert95 Data 16 iunie 2020 12:45:35
Problema Secventa 3 Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream fin("secv3.in");
ofstream fout("secv3.out");
int n, l, u;
long long v1[30005], v2[30005];
double smax;

int main() {
	fin >> n >> l >> u;
	for (int i = 1; i <= n; ++i) {
		fin >> v1[i];
		v1[i] += v1[i - 1];
	}
	for (int i = 1; i <= n; ++i) {
		fin >> v2[i];
		v2[i] += v2[i - 1];
	}
	for (int i = 1, min_j = 0; i <= n; ++i) {
		if (i == 2)
			min_j = 1;
		if ((double)(v1[i] - v1[min_j]) / (v2[i] - v2[min_j]) > smax && i - min_j >= l && i - min_j <= u) 
			smax = (double)(v1[i] - v1[min_j]) / (v2[i] - v2[min_j]);
		else {
			for (int j = i - u; j <= i - l; ++j)
				if ((double)(v1[i] - v1[j]) / (v2[i] - v2[j]) > smax)
					smax = (double)(v1[i] - v1[j]) / (v2[i] - v2[j]);
		}
		if (v1[i] < v1[min_j])
			min_j = i;
	}
	fout << fixed << setprecision(2) << smax;
	return 0;
}