Cod sursa(job #60415)

Utilizator peanutzAndrei Homorodean peanutz Data 14 mai 2007 09:24:30
Problema Secventa 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.91 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;
  #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;
	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;

}