Pagini recente » Cod sursa (job #654564) | Cod sursa (job #1445631) | Cod sursa (job #2268856) | Cod sursa (job #2009620) | Cod sursa (job #2476)
Cod sursa(job #2476)
# include <stdio.h>
const int MAX=30001;//AICI!!! 30000
int main()
{
int n,l,u,i;struct {long int sus,jos;} lastl[MAX]={0},lastu[MAX]={0},v[MAX]={0};
struct {long int sus,jos; int tra;} max[MAX]={0};
FILE *f=fopen("secv3.in","r");
fscanf(f,"%d%d%d",&n,&l,&u);
for (i=1;i<=n;i++) fscanf(f,"%d",&v[i].sus);
for (i=1;i<=n;i++) fscanf(f,"%d",&v[i].jos);
fclose(f);
//initializari
for (i=1 ;i<=l;i++)
lastl[l].sus+=v[i].sus,lastl[l].jos+=v[i].jos;
for (i=l+1;i<=n;i++)
{
lastl[i].sus=lastl[i-1].sus+v[i].sus-v[i-l].sus;
lastl[i].jos=lastl[i-1].jos+v[i].jos-v[i-l].jos;
}
for (i=1 ;i<=u;i++)
lastu[u].sus+=v[i].sus,lastu[u].jos+=v[i].jos;
for (i=u+1;i<=n;i++)
{
lastu[i].sus=lastu[i-1].sus+v[i].sus-v[i-u].sus;
lastu[i].jos=lastu[i-1].jos+v[i].jos-v[i-u].jos;
}
max[l].sus=lastl[l].sus;
max[l].jos=lastl[l].jos;
max[l].tra=l;
for (i=l+1;i<=n;i++)
{
if ((float)lastl[i].sus/lastl[i].jos>((float)max[i-1].sus+v[i].sus)/(max[i-1].jos+v[i].jos))
{
max[i].sus=lastl[i].sus;
max[i].jos=lastl[i].jos;
max[i].tra=l;
}
else if (max[i-1].tra<u)
{
max[i].sus=max[i-1].sus+v[i].sus;
max[i].jos=max[i-1].jos+v[i].jos;
max[i].tra=max[i-1].tra+1;
}
else
if ((float)lastl[i].sus/lastl[i].jos>(float)lastu[i].sus/lastu[i].jos)
{
max[i].sus=lastl[i].sus;
max[i].jos=lastl[i].jos;
max[i].tra=l;
}
else
{
max[i].sus=lastu[i].sus;
max[i].jos=lastu[i].jos;
max[i].tra=u;
}
}
float sol=(float)max[l].sus/max[l].jos;
for (i=l+1;i<=n;i++)
if (sol<(float)max[i].sus/max[i].jos)
sol=(float)max[i].sus/max[i].jos;
FILE *g=fopen("secv3.out","w");
fprintf(g,"%.2f\n",sol);
fcloseall();
return 0;
}