Cod sursa(job #114167)

Utilizator mithyPopovici Adrian mithy Data 12 decembrie 2007 21:23:28
Problema Secventa 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#define NMax 30001

long n, l, u;
long c[NMax], t[NMax];
double v[NMax], max;

void read();
void solve();
void write();

int main()
{
	read();
	solve();
	write();
	return 0;
}

void solve()
{
	int i, j;
	max = -1;

	for (i = 1; i <= u; i++)
		v[i] = -1;
	v[1] = (double)c[n-1] / t[n-1];
	if (l == 1 && v[1] > max)
		max = v[1];
		
	for (i = n-2; i >= 0; i--)
	{
		//calculez rapoartele secventelor [i, i + j]

		for (j = u; j >= 2; j--)
		{
			v[j] = v[j-1] * c[i] / t[i];
			if (j >= l && v[j] > max)
				max = v[j];
		}
		v[1] = (double)c[i] / t[i];
		if (l == 1 && v[1] > max)
			max = v[1];
	}
}

void read()
{
	int i;
	FILE *fin = fopen("secv3.in", "rt");
	fscanf(fin, "%ld %ld %ld", &n, &l, &u);
	for (i = 0; i < n; i++)
		fscanf(fin, "%ld", &c[i]);
	for (i = 0; i < n; i++)
		fscanf(fin, "%ld", &t[i]);
	fclose(fin);
}
void write()
{
	int i;
	FILE *fout = fopen("secv3.out", "wt");
	fprintf(fout, "%.2lf\n", max);
	fclose(fout);
}