Cod sursa(job #3172690)

Utilizator IvanAndreiIvan Andrei IvanAndrei Data 21 noiembrie 2023 08:10:25
Problema Secventa 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <bits/stdc++.h>

using namespace std;

const int max_size = 3e4 + 1;

double s1[max_size], s2[max_size];

signed main ()
{
    #ifdef LOCAL
       freopen("test.in", "r", stdin);
       freopen("test.out", "w", stdout);
    #else
       freopen("secv3.in", "r", stdin);
       freopen("secv3.out", "w", stdout);
    #endif // LOCAL
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n, l, u;
    cin >> n >> l >> u;
    for (int i = 1; i <= n; i++)
    {
        double x;
        cin >> x;
        s1[i] = s1[i - 1] + x;
    }
    for (int i = 1; i <= n; i++)
    {
        double x;
        cin >> x;
        s2[i] = s2[i - 1] + x;
    }
    double ans = 0;
    int st = 1;
    for (int i = l; i <= n; i++)
    {
        while (st < i - u)
        {
            st++;
        }
        if ((s1[i] - s1[st - 1]) / (s2[i] - s2[st - 1]) <= (s1[i] - s1[i - l]) / (s2[i] - s2[i - l]))
        {
            st = i - l + 1;
        }
        ans = max(ans, (s1[i] - s1[st - 1]) / (s2[i] - s2[st - 1]));
    }
    cout << fixed << setprecision(2) << ans;
    return 0;
}