Cod sursa(job #2477520)

Utilizator alex02Grigore Alexandru alex02 Data 20 octombrie 2019 15:42:27
Problema Secventa 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include <fstream>
#include <deque>
#include <iomanip>

using namespace std;

ifstream f("secv3.in");
ofstream g("secv3.out");

int n,l_min,l_max;
pair<int,int>partiale[35000];
double rez=0;

void citire(){
    f >> n >> l_min >> l_max;
    for(int i=1; i<=n; i++){
        int aux;
        f >> aux;
        partiale[i].first += partiale[i-1].first+aux;
    }
    for(int i=1; i<=n; i++){
        int aux;
        f >> aux;
        partiale[i].second += partiale[i-1].second+aux;
    }
}

double calc_raport(int start, int end){
    return (double)(partiale[end].first-partiale[start-1].first) / (partiale[end].second-partiale[start-1].second);
}

int main() {

    citire();
    int ind_s=1;

    for(int i=1; i<=n; i++){
        cout<<partiale[i].first<<" ";
    }
    cout<<endl;
    for(int i=1; i<=n; i++){
        cout<<partiale[i].second<<" ";
    }

    cout<<endl;
    double maxi=calc_raport(1,l_min);
    int ind_min=1;
    for(int i=l_min+1; i<=n; i++){
        if(i-ind_min>l_max)
            ind_min++;
        double m1,m2;
        m1=calc_raport(i,ind_min);
        m2=calc_raport(i,i-l_min+1);
        if (m2<m1){
            maxi=max(maxi,m1);
        }else
         maxi=max(maxi,m2),ind_min=i-l_min+1;
    }
    g << fixed<<setprecision(2)<<maxi;
    return 0;
}