Cod sursa(job #2689884)

Utilizator gasparrobert95Gaspar Robert Andrei gasparrobert95 Data 22 decembrie 2020 15:54:01
Problema Secventa 3 Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("secv3.in");
ofstream fout("secv3.out");
int n, l, u;
long long v1[30005], v2[30005];
bool smax_empty = true;
double smax;

void input() {
    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];
    }
    return;
}

int main() {
    input();
    int st = l, dr = u;
    while (st <= dr) {
        l = (st + dr) / 2;
        int aux = smax;
        for (int i = 1; i <= n - l + 1; ++i) {
            if ((double)(v1[i + l - 1] - v1[i - 1]) / (v2[i + l - 1] - v2[i - 1]) > smax || smax_empty == true) {
                smax_empty = false;
                smax = (double)(v1[i + l - 1] - v1[i - 1]) / (v2[i + l - 1] - v2[i - 1]);
            }
        }
        if (smax > aux)
            st = l + 1;
        else
            dr = l - 1;
    }
    fout << fixed << setprecision(2) << smax;
    return 0;
}