Pagini recente » Cod sursa (job #538956) | Cod sursa (job #2457811) | Cod sursa (job #784561) | Cod sursa (job #719563) | Cod sursa (job #135739)
Cod sursa(job #135739)
#include<stdio.h>
long int n,l,u,i,cit,c[30002],t[30002],start,stop,ts,cs;
double cd,td,sol;
void prel(long int pc,long int update);
int main()
{
FILE *f,*g;f=fopen("secv3.in","r");g=fopen("secv3.out","w");
fscanf(f,"%ld%ld%ld",&n,&l,&u);
for(i=1;i<=n;i++){ fscanf(f,"%ld",&cit);c[i]=c[i-1]+cit;}
for(i=1;i<=n;i++){ fscanf(f,"%ld",&cit);t[i]=t[i-1]+cit;}
ts=1;
for(start=1;start<=n-u+1;start++)
{ stop=u-start+1;
prel(start+l-1,1);
}
for(start=n-u;start<=n-l+1;start++)
{ stop=n;
prel(start+l-1,1);
}
cd=(double)cs;td=(double)ts;
sol=cd/td;
fprintf(g,"%.3lf",sol);
fcloseall();
return 0;
}
void prel(long int pc,long int update)
{ long int upd,cc,tt,ccc,ttt;
upd=update;
cc=c[pc]-c[start-1];tt=t[pc]-t[start-1];
if(cc*ts>cs*tt){cs=cc;ts=tt;}
if(pc+upd>stop)return;
while(pc+upd<=stop)
{ ccc=c[pc+upd]-c[start-1];ttt=t[pc+upd]-t[start-1];
if(ccc*tt>cc*ttt)prel(pc+upd,2*upd);
upd=2*upd;
}
}