Pagini recente » Cod sursa (job #285791) | Cod sursa (job #331505) | Cod sursa (job #1382968) | Cod sursa (job #1279372) | Cod sursa (job #1849897)
#include <cstdio>
#include <queue>
using namespace std;
const int NMAX = 30000;
float c[NMAX + 5] , t[NMAX + 5];
int main()
{
freopen("secv3.in" , "r" , stdin);
freopen("secv3.out" , "w" , stdout);
int n , l , u , val , i , st , dr;
float smax;
scanf("%d%d%d" , &n , &l , &u);
for(i = 1 ; i <= n ; i ++)
scanf("%d" , &val) , c[i] = c[i - 1] + val;
for(i = 1 ; i <= n ; i ++)
scanf("%d" , &val) , t[i] = t[i - 1] + val;
smax = 0;
for(st = dr = 1 ; dr <= n ; dr ++)
{
if(dr - st + 1 >= l)
{
if((c[dr] - c[st - 1]) / (t[dr] - t[st - 1]) > smax)
smax = (c[dr] - c[st - 1]) / (t[dr] - t[st - 1]);
while((c[dr] - c[st - 1]) / (t[dr] - t[st - 1]) <= smax && st <= dr)
st ++;
smax = (c[dr] - c[st - 1]) / (t[dr] - t[st - 1]);
}
if(dr - st + 1 > u)
{
if((c[dr] - c[st - 1]) / (t[dr] - t[st - 1]) > smax)
smax = (c[dr] - c[st - 1]) / (t[dr] - t[st - 1]);
while((c[dr] - c[st - 1]) / (t[dr] - t[st - 1]) <= smax && st <= dr)
{
if((c[dr] - c[st - 1]) / (t[dr] - t[st - 1]) > smax)
smax = (c[dr] - c[st - 1]) / (t[dr] - t[st - 1]);
st ++;
}
if((c[dr] - c[st - 1]) / (t[dr] - t[st - 1]) > smax)
smax = (c[dr] - c[st - 1]) / (t[dr] - t[st - 1]);
}
}
printf("%.2f\n" , smax);
return 0;
}