Cod sursa(job #3289492)

Utilizator amunnumeVlad Patrascu amunnume Data 27 martie 2025 10:20:15
Problema Secventa 3 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("secv3.in");
ofstream fout("secv3.out");
const int N=30005;
int n,l,r,i,j,a,b,s[N],t[N];
double c[N],d[N];
double v[N],mx;
deque<int> q;
void read()
{
    fin>>n>>l>>r;
    for(i=1; i<=n; ++i)
    {
        fin>>s[i];
        c[i]=c[i-1]+s[i];
    }
    for(i=1; i<=n; ++i)
    {
        fin>>t[i];
        d[i]=d[i-1]+t[i];
    }
}
int main()
{
    read();
    for(i=1; i<=n; ++i)
    {
        a+=s[i];
        b+=t[i];
        v[i]=1.0*a/b;
        while(!q.empty() && i-l>0 && v[i-l]>v[q.back()]) { q.pop_back();}
        while(!q.empty() && q.front()<i-r)  q.pop_front();

        if(i-l>0) q.push_back(i-l);
        if(q.empty()) mx=max(mx,v[i]);
        else
        {
            //cout<<i<<' '<<(d[i]-d[q.front()])<<' '<<(c[i]-c[q.front()])<<'\n';
            mx=max(mx,(c[i]-c[q.front()])/(d[i]-d[q.front()]));
        }
    }
    //fout<<fixed<<setprecision(2)<<mx;
    fout<<mx;
    return 0;
}