Pagini recente » Cod sursa (job #2558890) | Cod sursa (job #1019739) | Cod sursa (job #1114757) | Cod sursa (job #1805691) | Cod sursa (job #60376)
Cod sursa(job #60376)
#include <stdio.h>
#define NMAX 30100
short a[NMAX], b[NMAX];
int n, l, u;
double max;
void read()
{
int i;
#define dim 10000
char buf[dim];int poz = 0;
fread(buf,1,dim,stdin);
#define cit(x) \
{ \
x = 0; \
while(buf[poz] < '0') \
{ \
++poz; \
if(poz == dim) \
fread(buf,1,dim,stdin), poz = 0; \
} \
while(buf[poz] >= '0') \
{ \
x = x*10 + buf[poz] - '0'; \
if(++poz == dim) \
fread(buf,1,dim,stdin), poz = 0; \
} \
}
cit(n);cit(l);cit(u);
// scanf("%d %d %d\n", &n, &l, &u);
for(i = 1; i <= n; ++i)
{
// scanf("%d", &a[i]);
cit(a[i]);
}
for(i = 1; i <= n; ++i)
{
// scanf("%d", &b[i]);
cit(b[i]);
}
}
void solve()
{
int i, j;
short inc, sf;
double s1, s2;
double scade1, scade2;
s1 = s2 = 0;
for(i = 1; i <= l; ++i)
{
s1 += a[i];
s2 += b[i];
}
inc = 1;
sf = l;
max = s1 / s2;
while(sf <= n)
{
if(max * s2 < s1 )
max = s1 / s2;
scade1 = scade2 = 0;
for(i = sf+1; i <= (sf + (u - l)) && i <= n; ++i)
{
s1 += a[i];
s2 += b[i];
scade1 += a[i];
scade2 += b[i];
if(max * s2< s1 )
max = s1 / s2;
}
s1 -= a[inc]+scade1;
s2 -= b[inc]+scade2;
++inc, ++sf;
s1 += a[sf];
s2 += b[sf];
}
}
int main()
{
freopen("secv3.in", "r", stdin);
freopen("secv3.out", "w", stdout);
read();
solve();
printf("%.2lf\n", max);
fclose(stdin);
fclose(stdout);
return 0;
}