Suppose you are given an array of n integers and an integer k (n<= 10^5, 1<=k<=n). How to find the sub-array(contiguous) with maximum average whose length is more than k.

Thanks in advance.

# | User | Rating |
---|---|---|

1 | tourist | 3624 |

2 | Um_nik | 3468 |

3 | mnbvmar | 3363 |

4 | Petr | 3330 |

5 | wxhtxdy | 3329 |

6 | LHiC | 3300 |

7 | sunset | 3278 |

8 | V--o_o--V | 3275 |

9 | Vn_nV | 3182 |

10 | dotorya | 3156 |

# | User | Contrib. |
---|---|---|

1 | Radewoosh | 190 |

2 | Errichto | 184 |

3 | rng_58 | 161 |

3 | PikMike | 161 |

5 | Petr | 156 |

6 | Ashishgup | 153 |

6 | Vovuh | 153 |

8 | neal | 151 |

8 | 300iq | 151 |

8 | majk | 151 |

8 | Um_nik | 151 |

Suppose you are given an array of n integers and an integer k (n<= 10^5, 1<=k<=n). How to find the sub-array(contiguous) with maximum average whose length is more than k.

Thanks in advance.

↑

↓

Codeforces (c) Copyright 2010-2019 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Mar/25/2019 03:33:55 (f2).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|

first we do a binary search on the average and let it be x

we decrease x from all of the array elements and if there exists a sub array with lengh more than k whose sum is more than zero then we can say that we have such a sub array whose average is more than x other wise we can say that there doesnt exist any such sub array

how to find out if there is a sub array whose sum is more than zero and its length is more than k? we can say that a sub array [l, r) equals sum[1, r) — sum[1, l) so if we get the partial sums and fix the r of the sub array we just need an l which sum[1, r) >= sum[1, l) and l <= r — k this can be done with partial minimum of the partial sums

Your idea seems excellent :) thank you :)

Can it be done in O(n) complexity?

there isn't any way that i know of !

if anybody knows anything please say ;D

It's possible: http://www.cs.cornell.edu/~chung/download/density.pdf

Tnx :) But the article seems difficult to me :( If u know the algorithm can you please explain :/

It would be nice if u can write the crux of article here .That would be helpfull .

I'll write a blog post about this topic when I have time for it.

The link is not working. Do you have any other references?

Coincidence?

That question is not even based on this!

So you participated in the contest but this wasn't based on it? — http://store.picbg.net/pubpic/B3/4C/eb16def031d2b34c.png

Yes I did participate. And yes it is not based on the sum.

Another link: http://arxiv.org/abs/cs/0311020

Thank you!

https://www.geeksforgeeks.org/longest-subarray-having-average-greater-than-or-equal-to-x/