Cod sursa(job #545574)

Utilizator judgment7Andrei Aldea judgment7 Data 3 martie 2011 16:40:40
Problema Secventa 3 Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include<fstream>
using namespace std;
struct leberwursti{int timp, cost;}v[30003]; // e cost/timp
struct {int inceput,sfarsit;}pozmax[30003],pozmin[30003];
int n,l,u,i,y,j;
float sol;

void maxmin(int n,int k,long &max,long &min)
{ int i,j,smin,smax,z=0;
for (i = 0; i < n; i++)
{	smax=0;smin=0;
	for (j = 0; j < k; j++)
		{
			smax+=v[i+j].cost;
			smin+=v[i+j].timp;
		}
	if(smax>max)
		{	pozmax[z].inceput=i;
			pozmax[z].sfarsit=i+k-1;
			max=smax;
		}
	if(smin<min)
		{	pozmin[z].inceput=i;
			pozmin[z].sfarsit=i+k-1;
			min=smin;
		}
	
}

}




int main()
{long max=0,min=30001;// tine minte e 1/2      || cost/timp => 1=cost, 2=timp
	ifstream f("secv3.in");
	ofstream g("secv3.out");
	f>>n>>l>>u;
	for(i=0;i<n;i++)
		f>>v[i].cost;
	for(i=0;i<n;i++)
		f>>v[i].timp;
//maxmin(n,l,max,min);  TESTE PENTRU maxmin
//g<<max<<"\n"<<min<<"\n"<<pozmin[0].inceput<<" "<<pozmin[0].sfarsit<<" "<<pozmax[0].inceput<<" "<<pozmax[0].sfarsit;
for(y=l;y<=u;y++)
{float smin1=0,smin2=0,smax1=0,smax2=0;
	maxmin(n,y,max,min);
	for(i=pozmin[0].inceput;i<=pozmin[0].sfarsit;i++)
		{
			smin1+=v[i].cost;
			smin2+=v[i].timp;
		}
	for(i=pozmax[0].inceput;i<=pozmax[0].sfarsit;i++)
		{
			smax1+=v[i].cost;
			smax2+=v[i].timp;
		}
if( (smin1/smin2) > sol )
	sol=smin1/smin2;
if ( (smax1/smax2) > sol)
	sol=smax1/smax2;



}
g<<sol;


}