Cod sursa(job #114577)

Utilizator diac_paulPaul Diac diac_paul Data 14 decembrie 2007 21:37:29
Problema Secventa 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb

#include <stdio.h>
#define NMax 30002

long n, l, u, c[NMax], t[NMax], d[NMax], vf;
double p[NMax], maxx;
void read();
void solve();
void write();

int main()
{
	read();
	solve();
	write();

	return 0;
}

void solve()
{
	int i;
	vf = -1;
	for (i = 1; i <= n; i++)
	{
		//adaug elementul i - l
		if (i - l >= 0)
		{
			while (vf >= 0 && (p[d[vf]] > p[i-l] || d[vf] < i - u))
				vf--;

			d[vf] = i - l;
		}

		if (p[n] / p[d[vf]] > maxx)
			maxx = p[n] / p[d[vf]];
	}
}

void read()
{
	int i;
	FILE *fin = fopen("secv3.in", "rt");
	fscanf(fin, "%d %d %d", &n, &l, &u);
	for (i = 1; i <= n; i++)
		fscanf(fin, "%d", &c[i]);
	for (i = 1; i <= n; i++)
		fscanf(fin, "%d", &t[i]);

	p[0] = 1;
	for (i = 1; i <= n; i++)
		p[i] = p[i-1] * c[i] / t[i];
}

void write()
{
	FILE *fout = fopen("secv3.out", "wt");
	fprintf(fout, "%.2lf", maxx);
}