Cod sursa(job #307829)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 25 aprilie 2009 09:46:22
Problema Secventa 3 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include <ctime>
#include <cstdlib>

#define maxN 	30010

int A[maxN], B[maxN], X[maxN], Y[maxN];
int N, M;

int main () {
	int i, L, U, j, st, diff;
        double Sol = 0;

	freopen("secv3.in", "r", stdin);
	freopen("secv3.out", "w", stdout);

	scanf("%d%d%d", &N, &L, &U);

	for (i = 1; i <= N; ++ i)
		scanf("%d", &X[i]);

	for (i = 1; i <= N; ++ i)
		scanf("%d", &Y[i]);

	for (i = 1; i <= N; ++ i)
		A[i] = A[i - 1] + X[i];
	
	for (i = 1; i <= N; ++ i)
		B[i] = B[i - 1] + Y[i];

	srand(time(NULL));

	for (i = L; i <= N; ++ i) {
        	st = (i <= U) ? i : U;
	       	diff = st - L;
		if (diff < 500) {
                 	for (j = 0; j <= diff; ++ j) {
				st = i - L - j;
				if (1.00 * (A[i] - A[st]) / (B[i] - B[st]) > Sol)
					Sol = 1.00 * (A[i] - A[st]) / (B[i] - B[st]);
			}
		} else {
			for (j = 1; j <= 500; ++ j) {
                         	st = i - L - rand () % diff;
				if (1.00 * (A[i] - A[st]) / (B[i] - B[st]) > Sol)
					Sol = 1.00 * (A[i] - A[st]) / (B[i] - B[st]);
			}
		}
	}

	printf("%.2lf", Sol);

}