Pagini recente » Cod sursa (job #1893281) | Cod sursa (job #2802815) | Cod sursa (job #2768498) | Cod sursa (job #387604) | Cod sursa (job #545574)
Cod sursa(job #545574)
#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;
}