Cod sursa(job #2829817)

Utilizator DordeDorde Matei Dorde Data 8 ianuarie 2022 23:55:11
Problema Secventa 3 Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<bits/stdc++.h>
#define db double
using namespace std;
ifstream fin("secv3.in");
ofstream fout("secv3.out");
int const N = 30001;
deque<pair<int , int>> d;
int n , l , u;
int c[N] , t[N];
bool ok(){

}
int main()
{
    fin >> n >> l >> u;
    for(int i = 1 ; i <= n ; ++ i)
        fin >> c[i];
    for(int i = 1 ; i <= n ; ++ i)
        fin >> t[i];
    int sc(0) , st(0) ;
    db ans(-1);
    for(int i = 1 ; i <= n ; ++ i){
        sc += c[i] , st += t[i];
        d.push_back(make_pair(c[i] , t[i]));
        while(d.size() > u){
            auto [a , b] = d.front();
            d.pop_front();
            sc -= a , st -= b;
        }
        while(d.size() > l){
            auto [a , b] = d.front();
            if((db)sc / st > (db)(sc - a) / (st - b)){
                break;
            }
            d.pop_front();
            sc -= a , st -= b;
        }
        if(d.size() >= l)
            ans = max(ans , (db)sc / st);
    }
    fout << fixed << setprecision(2) << ans << '\n';
    return 0;
}