Cod sursa(job #569904)

Utilizator coderninuHasna Robert coderninu Data 2 aprilie 2011 12:41:31
Problema Secventa 3 Scor 100
Compilator cpp Status done
Runda preselectie_acm_unibuc Marime 0.94 kb
#include <cstdio>
#define Nmax 30001

using namespace std;

int S[Nmax], J[Nmax], N, L, U, i, sus, jos, st, dr, minsus, minjos;
double rez, temp;

int main()
{
	freopen("secv3.in", "r", stdin);
	freopen("secv3.out", "w", stdout);
	
	scanf("%d %d %d\n", &N, &L, &U);
	for (i = 1; i<=N; i++) scanf("%d ", S + i);
	for (i = 1; i<=N; i++) scanf("%d ", J + i); 
	for (i = 1; i<=L; i++) { sus+=S[i]; jos +=J[i]; }
	rez = (double)sus / jos;
	st = 1; dr = L; minsus = sus; minjos = jos;
	for (i = L + 1; i<=N; i++)
	{
		sus += S[i];
		jos += J[i];
		minsus += S[i] - S[i-L];
		minjos += J[i] - J[i-L];
		if (dr - st + 1 == U) { sus -=S[i-L]; jos -=J[i-L]; }
		if ((double)sus / jos > (double)minsus / minjos)
		{
			dr++;
			temp = (double)sus / jos;
		}
		else
		{
			sus = minsus;
			jos = minjos;
			dr = i;
			st = i-L+1;
			temp = (double)sus / jos;
		}
		if (temp > rez) rez = temp;
	}
	printf("%.2lf", rez);
	return 0;
}