Cod sursa(job #347228)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 11 septembrie 2009 15:44:00
Problema Secventa 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#include <values.h>
#define Nmax 30005

int c[Nmax],t[Nmax];
int n,L,U,sumt,sumc,st,dr,i,maxc,maxt;
int auxc,auxt,j;

int update(){
	if ( sumc*maxt > sumt*maxc ){  // adica sumc/sumt > maxc/maxt
   	maxc = sumc, maxt=sumt;
      return 1;
   }
   return 0;
}


int main(){
	freopen("secv3.in","r",stdin);
   freopen("secv3.out","w",stdout);
   scanf("%d%d%d",&n,&L,&U);
   for(i=1;i<=n;++i) scanf("%d",&c[i]);
   for(i=1;i<=n;++i) scanf("%d",&t[i]);

   sumc=0; sumt=0; maxt = MAXINT;
   for(st=dr=1; dr<=n; ){
   	sumc += c[dr]; sumt += t[dr];
      if(dr-st+1 > U ) sumc -= c[st], sumt -= t[st], st++;
      if(dr-st+1 >=L && dr-st+1 <=U){
      	auxc=sumc, auxt=sumt;
         update();
         for(j=st; j<=dr && dr-j>=L && dr-j<=U; j++){
          sumc-=c[st], sumt-=t[st];
          update();
         }
         sumc=auxc, sumt=auxt;
      }
      dr++;
   }

   printf("%.4f\n", (double)maxc/maxt);
   fclose(stdin); fclose(stdout);
   return 0;
}