Cod sursa(job #1588302)

Utilizator preda.andreiPreda Andrei preda.andrei Data 2 februarie 2016 22:34:50
Problema Secventa 3 Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <cstdio>

using namespace std;

int costuri[30001];
int timpi[30001];

int main()
{
    FILE *fin = fopen("secv3.in", "r");
    FILE *fout = fopen("secv3.out", "w");

    int n, r1, r2, mij;
    float maxim = 0, sum, f;

    fscanf(fin, "%d%d%d", &n, &r1, &r2);
    for(int i=1; i<=n; ++i){
        fscanf(fin, "%d", &costuri[i]);
        costuri[i] += costuri[i-1];
    }
    for(int i=1; i<=n; ++i){
        fscanf(fin, "%d", &timpi[i]);
        timpi[i] += timpi[i-1];
    }

    while(r1 <= r2){
        mij = r1 + (r2 - r1) / 2;

        sum = 0;
        for(int i=1; i+mij-1<=n; ++i){
            f = 1.0 * (costuri[i+mij-1] - costuri[i-1]) / (timpi[i+mij-1] - timpi[i-1]);
            if(f > sum)
                sum = f;
        }

        if(sum > maxim){
            maxim = sum;
            r1 = mij + 1;
        }
        else r2 = mij - 1;
    }

    fprintf(fout, "%.2f", maxim);
    return 0;
}