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.