#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main() {
int n, k; cin >> n >> k;
vector<int> vec(n);
for(int i = 0; i < n; i++) {
int element; cin >> element;
vec.push_back(element);
}
priority_queue<int> pq(less<int>(), vec); // O(N) instead of O(NlogN)
int count= 0;
while(k--) {
int q; cin >> q;
int max;
while(count != q) {
max = pq.top(); // O(1)
pq.pop(); // O(logN)
if(max/2 != 0) {
pq.push(max/2); // O(logN)
}
count++;
}
cout << max << endl;
}
// overall time complexity O(N + (klogN))
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cXVldWU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWludCBuLCBrOyAgIGNpbiA+PiBuID4+IGs7Cgl2ZWN0b3I8aW50PiB2ZWMobik7Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkgICAgaW50IGVsZW1lbnQ7ICAgIGNpbiA+PiBlbGVtZW50OwoJICAgIHZlYy5wdXNoX2JhY2soZWxlbWVudCk7Cgl9CiAgICAKICAgIHByaW9yaXR5X3F1ZXVlPGludD4gcHEobGVzczxpbnQ+KCksIHZlYyk7IC8vIE8oTikgaW5zdGVhZCBvZiBPKE5sb2dOKQoJaW50IGNvdW50PSAwOwoJd2hpbGUoay0tKSB7CgkgICAgaW50IHE7ICBjaW4gPj4gcTsKCSAgICBpbnQgbWF4OwoJICAgIHdoaWxlKGNvdW50ICE9IHEpIHsKCSAgICAgICAgbWF4ID0gcHEudG9wKCk7IC8vIE8oMSkKCSAgICAgICAgcHEucG9wKCk7IC8vIE8obG9nTikKCSAgICAgICAgaWYobWF4LzIgIT0gMCkgewoJICAgICAgICAgICAgcHEucHVzaChtYXgvMik7IC8vIE8obG9nTikKCSAgICAgICAgfQoJICAgICAgICBjb3VudCsrOwoJICAgIH0KCSAgICBjb3V0IDw8IG1heCA8PCBlbmRsOwoJfQoJCgkvLyBvdmVyYWxsIHRpbWUgY29tcGxleGl0eSBPKE4gKyAoa2xvZ04pKQoJCglyZXR1cm4gMDsKfQo=