Cod sursa(job #334398)

Utilizator indestructiblecont de teste indestructible Data 26 iulie 2009 17:11:13
Problema Secventa 3 Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>
#define N 1<<18
#define NMAX 32000 
int n,l,u;
char v[N];
int cost[NMAX],timp[NMAX],r,t;
double best;
void read()
{
	scanf("%d%d%d\n",&n,&l,&u);
	fgets(v+1,N,stdin);
	int i,nr=0;
	for (i=1; (v[i]>='0' && v[i]<='9') || v[i]==' '; i++)
	{
		if (v[i]>='0' && v[i]<='9')
			nr=nr*10+v[i]-'0';
		if (v[i]==' ' && nr)
		{
			cost[++r]=cost[r-1]+nr;
			nr=0;
		}
	}
	if (nr)
		cost[++r]=cost[r-1]+nr;
	nr=0;
	fgets(v+1,N,stdin);
	for (i=1; (v[i]>='0' && v[i]<='9') || v[i]==' '; i++)
	{
		if (v[i]>='0' && v[i]<='9')
			nr=nr*10+v[i]-'0';
		if (v[i]==' ' && nr)
		{
			timp[++t]=timp[t-1]+nr;
			nr=0;
		}
	}
	if (nr)
		timp[++t]=timp[t-1]+nr;
}
void solve()
{
	int i,j,nr1,nr2;
	double k;
	for (i=l; i<=u; i++)
		for (j=1; j<=n-i+1; j++)
		{
			nr1=cost[j+i-1]-cost[j-1];
			nr2=timp[j+i-1]-timp[j-1];
			k=(double)nr1/nr2;
			if (k>best)
				best=k;
		}
	printf("%.2lf\n",best);
}
int main()
{
	freopen("secv3.in","r",stdin);
	freopen("secv3.out","w",stdout);
	read();
	solve();
	return 0;
}