The only difference between easy and hard versions is the maximum values of $$$n$$$ and $$$q$$$.
You are given an array, consisting of $$$n$$$ integers. Initially, all elements are red.
You can apply the following operation to the array multiple times. During the $$$i$$$-th operation, you select an element of the array; then:
The operations are numbered from $$$1$$$, i. e. during the first operation some element is changed by $$$1$$$ and so on.
You are asked $$$q$$$ queries of the following form:
Note that the operations don't affect the array between queries, all queries are asked on the initial array $$$a$$$.
The first line contains two integers $$$n$$$ and $$$q$$$ ($$$1 \le n, q \le 2 \cdot 10^5$$$) — the number of elements in the array and the number of queries.
The second line contains $$$n$$$ integers $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 10^9$$$).
The third line contains $$$q$$$ integers $$$k_1, k_2, \dots, k_q$$$ ($$$1 \le k_j \le 10^9$$$).
For each query, print a single integer — the largest minimum that the array can have after you apply exactly $$$k$$$ operations to it.
4 10 5 2 8 4 1 2 3 4 5 6 7 8 9 10
3 4 5 6 7 8 8 10 8 12
5 10 5 2 8 4 4 1 2 3 4 5 6 7 8 9 10
3 4 5 6 7 8 9 8 11 8
2 5 2 3 10 6 8 1 3
10 7 8 3 3
Name |
---|