Cod sursa(job #152927)

Utilizator RockManIzsak Istvan RockMan Data 9 martie 2008 22:06:40
Problema Secventa 3 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
#define fin "secv3.in"
#define fout "secv3.out"
#define rep(i,n) for(i=1;i<=n;i++)

int N,L,U,Cost[30001],Timp[30001];

void citire()
{
	FILE *f=fopen(fin,"r");
	fscanf(f,"%d%d%d",&N,&L,&U);
	int i;
	rep(i,N)
		fscanf(f,"%d",Cost + i);
	rep(i,N)
		fscanf(f,"%d",Timp + i);
	fclose(f);
}
void afisare(float max)
{
	FILE *f=fopen(fout,"w");
	fprintf(f,"%.2lf",max);
	fclose(f);
}
void solutie()
{
	float max,su,sd,val;
	int i,uplimit,j,k;
	uplimit = N - L + 1;
	max = 0;
	for(i = 1; i <= uplimit; i++)
	{
		su = 0;
		sd = 0;
		k = i + L - 1;
		for(j = i; j <= k; j++)
		{
			su += Cost [j];
			sd += Timp [j];
		}
		while((k + 1 <= N)&&(k + 1 <= U)&&(su / sd * Timp[k + 1] - Cost[k + 1]<0))
		{
			k++;
			su += Cost [k];
			sd += Timp [k];
		}
		if((val = su / sd) > max) max = val;
	}
	afisare(max);
}
int main()
{
	citire();
	solutie();
	return 0;
}