Cod sursa(job #96008)

Utilizator megabyteBarsan Paul megabyte Data 30 octombrie 2007 22:34:01
Problema Secventa 3 Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <cstdio>
#include <cmath>
#define INF "secv3.in"
#define OUF "secv3.out"
#define NMAX 30002
#define EPS 1e-8
using namespace std;
int n,l,u,c[NMAX],t[NMAX];

double sumk(int k)
{
    int i;
    double max,aux;
    max=0.0;
    for(i=k;i<=n;++i)
    {
       aux=((double)(c[i]-c[i-k])/(double)(t[i]-t[i-k]));
       if(aux>max) max=aux;
    }
    return max;
}
      
int main()
{
    int i,j,st,dr,mij;
    double max,aux;
    FILE *in,*out;
    in=fopen(INF,"r");
    out=fopen(OUF,"w");
    fscanf(in,"%d%d%d",&n,&l,&u);
    c[0]=t[0]=0;
    for(i=1;i<=n;++i) {fscanf(in,"%d",&mij);c[i]=c[i-1]+mij;}
    for(i=1;i<=n;++i) {fscanf(in,"%d",&mij);t[i]=t[i-1]+mij;}
    st=l;dr=u;max=0.0;
    while(st<=dr)
    {
                 mij=(st+dr)/2;
                 aux=sumk(mij);
                 if(aux>max)
                 {
                            max=aux;
                            dr=mij-1;
                 }
                 else st=mij+1;
    }
        
    fprintf(out,"%.2lf",max);
   // printf("%.2lf",max);
   // scanf("%d",&i);
    fclose(in);fclose(out);
    return 0;
}