Cod sursa(job #2066129)
| Utilizator | Data | 14 noiembrie 2017 18:32:04 | |
|---|---|---|---|
| Problema | Secventa 3 | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.5 kb |
#include <fstream>
#include <math.h>
#include <iostream>
using namespace std;
ifstream fin("secv3.in");
ofstream fout("secv3.out");
struct numar
{
int t,c;
}a[30001];
int n,l,u,start=0;
int main()
{
fin>>n>>l>>u;
float s1,s2=0,s3=0,s4=0,maxim=0;
s1=s2;
for(int i=1;i<=n;++i)
fin>>a[i].c;
for(int i=1;i<=n;++i)
fin>>a[i].t;
fout<<maxim;
for(int i=1;i<=n;++i)
{
if(i>l)
{
if(maxim<(float)s1/s2)
maxim=(float)s1/s2;
s3=s3+a[i-l].c;
s4=s4+a[i-l].t;
if((float)(s1-s3+a[i].c)/(s2-s4+a[i].t)>(float)(s1+a[i].c)/(s2+a[i].t))
{
start=i-l+1;
s1=s1-s3+a[i].c;
s2=s2-s4+a[i].t;
s3=s4=0;
}
else if(i-start>u)
{
start=i-l+1;
s1=s1-s3;
s2=s2-s4;
s3=s4=0;
}
else
{
s1=s1+a[i].c;
s2=s2+a[i].t;
}
}
else
{if(start==0)
start=i;
s1=s1+a[i].c;
s2=s2+a[i].t;}
}
if(maxim<(float)s1/s2)
maxim=(float)s1/s2;
fout<<maxim;
return 0;
}
