Cod sursa(job #63271)

Utilizator cos_minBondane Cosmin cos_min Data 27 mai 2007 17:55:17
Problema Secventa 3 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
// 50 pcte (TLE)
#include <stdio.h>
#include <math.h>
#define in "secv3.in"
#define out "secv3.out"
#define DIM 30001
#define eps 0.000001

double sum, max; 
int a[DIM], b[DIM]; 
int n, k, t, u, l, v, j, k2,i;
double c,g;
int spart1[DIM], spart2[DIM];

FILE *fout = fopen(out,"w");

void Solve();
void Exista();

int main()
{
    Solve();
    
    return 0;
}

void Solve()
{
    double maxim = -1, maxim2 = -1;
    int sp = 0, sp2 = 0;
    int w;
    FILE *fin = fopen(in,"r");
    
    fscanf(fin,"%d %d %d",&n, &u, &l);
    for ( i = 1; i <= n; i++ )
    {
        fscanf(fin,"%d",&a[i]);
        spart1[i] = spart1[i-1] + a[i];
    }   
     
    for ( i = 1; i <= n; i++ )
    {
        fscanf(fin,"%d",&b[i]);
        spart2[i] = spart2[i-1] + b[i];
    }
    fclose(fin);  
    
    int f;
    /*double st = 0, dr = n, mij;
    
    while ( dr - st > eps )
    {
        mij = (st+dr)/2;
        fprintf(fout,"%lf ", mij);
        f = Exista(mij);
        fprintf(fout,"%d\n", f);
        if ( f == 1 ) st = mij; 
        else dr = mij; 
    } */
    Exista();
    fclose(fout);
} 

void Exista() 
{
    double sum, maxim = -1;
    int val, ok = 0;
    for ( int i = 1; i <= n; i++ )
    {
        val = i + u - 1;
        while ( val - i + 1 <= l )
        {
            sum = (double)( spart1[val]-spart1[i-1])/(spart2[val]-spart2[i-1] );
            if ( (sum - maxim) > eps ) maxim = sum;
            val++;
        }
    }
    fprintf(fout,"%lf", maxim);
}