Cod sursa(job #2591147)

Utilizator al3xionescuIonescu Alexandru al3xionescu Data 29 martie 2020 21:07:26
Problema Secventa 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <deque>
#include <iomanip>
#define NMAX 30005
using namespace std;
ifstream f("secv3.in");
ofstream g("secv3.out");
int cost[NMAX], timp[NMAX], n, u, l;
 
void citire(){
    f >> n>> l >> u;
    for (int i=1; i<=n; i++){
        f >> cost[i];
        cost[i] += cost[i-1];
    }
    for(int i=1; i<=n; i++){
        f >> timp[i];
        timp[i] += timp[i-1];
    }
}

double fractie(int start, int finish){
    return (double)(cost[finish] - cost[start-1]) / (timp[finish] - timp[start-1]);
}

void secventa(){
    int pozstart = 1;
    double vmax = fractie(1, l);
    for (int i = l + 1; i <= n; i++) {
        if (i - pozstart + 1 > u)
            pozstart ++;
        double ma1 = fractie(i-l+1, i);
        double ma2 = fractie(pozstart, i);
        if (ma1 > ma2) {
            vmax = max(vmax, ma1);
            pozstart = i - l + 1;
        }
        else vmax = max(vmax, ma2);
    }
    g << fixed << setprecision(2) << vmax;
}

int main()
{
    citire();
    secventa();
    return 0;
}