Pagini recente » Cod sursa (job #1517222) | Cod sursa (job #761176) | Cod sursa (job #1862431) | Cod sursa (job #2696331) | Cod sursa (job #2064124)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream fin("secv3.in");
ofstream fout("secv3.out");
struct numar
{
int t,c;
}a[30000];
int n,l,u;
int main()
{
fin>>n>>l>>u;
int s1=0,s2=0,s3,s4;
float s,maxim=0.0;
for(int i=1;i<=n;i++)
{fin>>a[i].c;
s1=s1+a[i].c;}
for(int i=1;i<=n;i++)
{fin>>a[i].t;
s2=s2+a[i].t;}
int m=n;
s=(float)s1/s2;
int finish=n,start=1;
int auxs=0,auxf=0,ver=1;
while(finish-start+1>l&&ver==1)
{
if(start==auxs&&finish==auxf)
ver=0;
auxs=start;
auxf=finish;
if(finish-start+1<=u&&finish-start+1>=l)
if(s>maxim)
maxim=s;
m=(start+finish)/2;
s1=0;s2=0;s3=0;s4=0;
for(int i=start;i<=m&&m>0;i++)
{
s1=s1+a[i].c;
s2=s2+a[i].t;
}
for(int j=m;j<=finish&&m>0;j++)
{
s3=s3+a[j].c;
s4=s4+a[j].t;
}
if((float)s1/s2>(float)s3/s4)
{
s=(float)s1/s2;
finish=m;
}
else
{
s=(float)s3/s4;
start=m;
finish=n;
}
}
if(l==1)
if(maxim<(float)a[finish].c/a[finish].t)
maxim=(float)a[finish].c/a[finish].t;
fout<<maxim;
return 0;
}