Pagini recente » Cod sursa (job #194264) | Cod sursa (job #606873) | Cod sursa (job #947383) | Cod sursa (job #1848213) | Cod sursa (job #60474)
Cod sursa(job #60474)
#include <cstdio>
#define max 30000
FILE *in = fopen("secv3.in","r"), *out = fopen("secv3.out","w");
struct sir
{
double cost, timp;
int lng;
};
int n, l, u;
int a[max];
int b[max];
sir c[max];
void read()
{
fscanf(in, "%d %d %d", &n, &l, &u);
for ( int i = 0; i < n; ++i )
fscanf(in, "%d", &a[i]);
for ( int i = 0; i < n; ++i )
fscanf(in, "%d", &b[i]);
}
int main()
{
read();
c[0].cost = a[0]*1.0;
c[0].timp = b[0]*1.0;
c[0].lng = 1;
int sumc[max]; sumc[0] = a[0];
int sumt[max]; sumt[0] = b[0];
for ( int i = 1; i < n; ++i )
{
sumc[i] = sumc[i-1] + a[i];
sumt[i] = sumt[i-1] + b[i];
}
double rez = -1.0;
for ( int i = 1; i < n; ++i )
{
if ( ( c[i-1].cost + sumc[i-1] ) / ( c[i-1].timp + sumt[i-1] ) > (double)a[i] / b[i] )
{
c[i].cost = c[i-1].cost + sumc[i-1];
c[i].timp = c[i-1].timp + sumt[i-1];
c[i].lng = c[i-1].lng + 1;
}
else
{
c[i].cost = a[i];
c[i].timp = b[i];
c[i].lng = 1;
}
if ( c[i].cost / c[i].timp > rez && c[i].lng >= l && c[i].lng <= u )
rez = c[i].cost / c[i].timp;
}
// for ( int i = 0; i < n; ++i )
// printf("%.2lf %.2lf %d\n", c[i].cost, c[i].timp, c[i].lng);
// printf("%.2lf %.2lf\n", (c[0].cost+a[1]) / (c[0].timp+b[1]), (double)a[1] / b[1]);
fprintf(out, "%.2lf\n", rez);
return 0;
}