Pagini recente » abcdefg | Cod sursa (job #2332415) | Cod sursa (job #3167798) | Cod sursa (job #191237) | Cod sursa (job #44424)
Cod sursa(job #44424)
#include <stdio.h>
float X,Y,fit,answer,z[2<<15];
int i,j,min,max,x[2<<15],y[2<<15],n;
#define add() {i++;X+=x[i];Y+=y[i];fit=X/Y;}
#define sub() {X-=x[j];Y-=y[j];j++;fit=X/Y;}
int main (void)
{
FILE *f=fopen("secv3.in","r");
fscanf(f,"%d %d %d",&n,&min,&max);
for(i=1;i<=n;i++) fscanf(f,"%d",&x[i]);
for(i=1;i<=n;i++) fscanf(f,"%d",&y[i]);
for(i=1;i<=n;i++) z[i]=(float)x[i]/(float)y[i];
fclose(f);
i=0;
for(j=1;j<=min;j++) add();
answer = fit;
i=min;
j=1;
do
{
if (i==n || i-j+1==max) sub()
else if (i-j+1==min) add()
else if (z[j]<fit) sub()
else if (z[i+1]>fit) add()
else
{
if ((X+(float)x[i+1])/(Y+(float)y[i+1])<
(X-(float)x[j])/(Y+(float)y[j]))
sub() else
add()
}
if (fit>answer) answer=fit;
// printf("(%d %d) %0.2f %0.2f/%0.2f\n",j,i,fit,X,Y);
}
while (j<=n-min+1);
f=fopen("secv3.out","w");
fprintf(f,"%.2f\n",answer);
fclose(f);
return 0;
}