Cod sursa(job #60413)

Utilizator peanutzAndrei Homorodean peanutz Data 14 mai 2007 09:22:24
Problema Secventa 3 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <stdio.h>

#define NMAX 30100

int a[NMAX], b[NMAX];
int n, l, u;
double max;

double s1[NMAX], s2[NMAX];

void read()
{
	int i;

	scanf("%d %d %d\n", &n, &l, &u);

	for(i = 1; i <= n; ++i)
	{
		scanf("%d", &a[i]);

		s1[i] = s1[i-1] + a[i];
	}
	for(i = 1; i <= n; ++i)
	{
		scanf("%d", &b[i]);

		s2[i] = s2[i-1] + b[i];
	}
}

void solve()
{
	int i;
	short inc, sf;
	//double s1, s2;
	//double scade1, scade2;

	//s1 = s2 = 0;

	inc = 1;
	sf = l;

	max = s1[sf] / s2[sf];

	while(sf <= n)
	{
		/*if(max * (s2[sf] - s2[inc-1]) < s1[sf] - s1[inc-1] )
			max = (s1[sf] - s1[inc-1]) / (s2[sf] - s2[inc-1]);
		*/
		//scade1 = scade2 = 0;

		for(i = sf; i <= (sf + (u - l)) && i <= n; ++i)
		{

			if(max * (s2[i] - s2[inc-1]) < s1[i] - s1[inc-1])
				max = (s1[i] - s1[inc-1]) / (s2[i] - s2[inc-1]);
		}



		//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;

}