CF1832D2 Red-Blue Operations (Hard Version)
Description
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:
- if the element is red, it increases by $ i $ and becomes blue;
- if the element is blue, it decreases by $ i $ and becomes red.
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:
- given an integer $ k $ , what can the largest minimum in the array be if you apply exactly $ k $ operations to it?
Note that the operations don't affect the array between queries, all queries are asked on the initial array $ a $ .
Input Format
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 $ ).
Output Format
For each query, print a single integer — the largest minimum that the array can have after you apply exactly $ k $ operations to it.