Cod sursa(job #3289745)

Utilizator Victor5539Tanase Victor Victor5539 Data 28 martie 2025 13:03:35
Problema Secventa 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <deque>
#include <iomanip>
#define int long long
using namespace std;
ifstream fin("secv3.in");
ofstream fout("secv3.out");

const int MAX=30000;
int n,x,y,a[MAX+5],b[MAX+5],i;
double sa[MAX+5],sb[MAX+5],sol,r,raport;
deque <int> dq;
signed main()
{
    fin>>n>>x>>y;

    for (i=1; i<=n; i++)
        fin>>a[i];

    for (i=1; i<=n; i++)
        fin>>b[i];

    for (i=1; i<=n; i++)
        sa[i]=sa[i-1]+a[i];

    for (i=1; i<=n; i++)
        sb[i]=sb[i-1]+b[i];

    sol=0;
    for (i=x; i<=n; i++)
    {
        while (!dq.empty() && dq.front()<i-y) dq.pop_front();
        while (!dq.empty() && (sa[dq.back()]-sb[dq.back()]*sol)>(sa[i-x]-sb[i-x]*sol)) dq.pop_back();
        dq.push_back(i-x);
        raport=(sa[i]-sa[dq.front()])/(sb[i]-sb[dq.front()]);
        if (raport>sol)
            sol=raport;
    }

    fout<<fixed<<setprecision(2)<<sol;
    return 0;
}