Cod sursa(job #3316397)

Utilizator stefan_ciureaStefan Ciurea stefan_ciurea Data 18 octombrie 2025 17:40:36
Problema Secventa 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <deque>
#include <iomanip>

using namespace std;

const int Nmax=30005;

int c[Nmax],t[Nmax];
double spc[Nmax],spt[Nmax];

deque<int> dq;

int main()
{
    ifstream fin("secv3.in");
    ofstream fout("secv3.out");
    int n,l,u;
    fin>>n>>l>>u;
    for (int i=1; i<=n; ++i) {
        fin>>c[i];
        spc[i]=spc[i-1]+c[i];
    }
    for (int i=1; i<=n; ++i) {
        fin>>t[i];
        spt[i]=spt[i-1]+t[i];
    }
    double sol=0;
    for (int i=l; i<=n; ++i) {
        if (!dq.empty() && dq.front()<i-u) {
            dq.pop_front();
        }
        while (!dq.empty() && spc[dq.back()]-spt[dq.back()]*sol>spc[i-l]-spt[i-l]*sol) {
            dq.pop_back();
        }
        dq.push_back(i-l);
        double temp=(spc[i]-spc[dq.front()])/(spt[i]-spt[dq.front()]);
        sol=max(sol,temp);
    }
    fout<<fixed<<setprecision(2)<<sol;
    fin.close();
    fout.close();
    return 0;
}