Cod sursa(job #114166)

Utilizator mithyPopovici Adrian mithy Data 12 decembrie 2007 21:22:41
Problema Secventa 3 Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <stdio.h>
#define NMax 30000

int n, min, max;
int secv[NMax], timp[NMax], lg[NMax];
double secvm[NMax], timpm[NMax];

void citire();
void pd();


int main()
{
	citire();
	pd();

	return 0 ;
}

void pd()
{
	int i;
	double maxx = -1;

	secvm[n-1] = secv[n-1];
	timpm[n-1] = timp[n-1];
	lg[n-1]    = 1;

	for (i=n-2; i>=0; i--)
	{
		if ( (secv[i]+secvm[i+1]) / (timp[i]+timpm[i+1]) > (secv[i] / timp[i]) )
		{
			secvm[i] = secv[i] + secvm[i+1];
			timpm[i] = timp[i] + timpm[i+1];
			lg[i]    = lg[i+1] + 1;
		}
		else
		{
			secvm[i] = secv[i];
			timpm[i] = timp[i];
			lg[i]    = 1;
		}
	}

	for (i=0; i<n; i++)
		if ( (secvm[i] / timpm[i]) > maxx && lg[i] >= min && lg[i] <= max )
			maxx = secvm[i]/timpm[i];

	FILE *g = fopen( "secv3.out", "wt" );

	fprintf( g, "%.2f\n", maxx );
	fclose( g );
}
void citire()
{
	int i;
	FILE *f = fopen( "secv3.in", "rt" );
	fscanf( f, "%d %d %d", &n, &min, &max );

	for (i=0; i<n; i++)
		fscanf( f, "%d", &secv[i] );
	for (i=0; i<n; i++)
		fscanf( f, "%d", &timp[i] );

	fclose( f );
}