Pagini recente » Cod sursa (job #2439809) | Cod sursa (job #62424) | Cod sursa (job #1838221) | Cod sursa (job #1075396) | Cod sursa (job #63271)
Cod sursa(job #63271)
// 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);
}