#include <bits/stdc++.h>
using namespace std;
struct Node {
int maxLen, pre, suf, sz;
bool active;
};
int n, q;
pair<int, int> a[100005]; // Lưu {giá trị, vị trí}
struct Query {
int k, id;
};
Query queries[100005];
int ans[100005];
Node tree[400005];
// Hàm trộn 2 node
Node merge(Node left, Node right) {
Node res;
res.sz = left.sz + right.sz;
res.active = false; // Node cha chỉ active nếu cả 2 con đều active (không cần thiết lắm ở đây)
res.pre = left.pre;
if (left.pre == left.sz) res.pre += right.pre;
res.suf = right.suf;
if (right.suf == right.sz) res.suf += left.suf;
res.maxLen = max({left.maxLen, right.maxLen, left.suf + right.pre});
return res;
}
void build(int id, int l, int r) {
tree[id] = {0, 0, 0, r - l + 1, false};
if (l == r) return;
int mid = (l + r) / 2;
build(2 * id, l, mid);
build(2 * id + 1, mid + 1, r);
}
void update(int id, int l, int r, int pos) {
if (l == r) {
tree[id] = {1, 1, 1, 1, true};
return;
}
int mid = (l + r) / 2;
if (pos <= mid) update(2 * id, l, mid, pos);
else update(2 * id + 1, mid + 1, r, pos);
tree[id] = merge(tree[2 * id], tree[2 * id + 1]);
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> a[i].first;
a[i].second = i;
}
sort(a + 1, a + n + 1); // Sắp xếp giá trị mảng để kích hoạt dần dần
for (int i = 0; i < q; i++) {
cin >> queries[i].k;
queries[i].id = i;
}
sort(queries, queries + q, [](Query x, Query y) {
return x.k < y.k;
}); // Sắp xếp truy vấn để xử lý offline
build(1, 1, n);
int idx = 1;
for (int i = 0; i < q; i++) {
// "Bật đèn" các phần tử thỏa mãn a[idx].val <= queries[i].k
while (idx <= n && a[idx].first <= queries[i].k) {
update(1, 1, n, a[idx].second);
idx++;
}
ans[queries[i].id] = tree[1].maxLen;
}
for (int i = 0; i < q; i++) cout << ans[i] << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgTm9kZSB7CiAgICBpbnQgbWF4TGVuLCBwcmUsIHN1Ziwgc3o7CiAgICBib29sIGFjdGl2ZTsKfTsKCmludCBuLCBxOwpwYWlyPGludCwgaW50PiBhWzEwMDAwNV07IC8vIEzGsHUge2dpw6EgdHLhu4ssIHbhu4sgdHLDrX0Kc3RydWN0IFF1ZXJ5IHsKICAgIGludCBrLCBpZDsKfTsKUXVlcnkgcXVlcmllc1sxMDAwMDVdOwppbnQgYW5zWzEwMDAwNV07Ck5vZGUgdHJlZVs0MDAwMDVdOwoKLy8gSMOgbSB0cuG7mW4gMiBub2RlCk5vZGUgbWVyZ2UoTm9kZSBsZWZ0LCBOb2RlIHJpZ2h0KSB7CiAgICBOb2RlIHJlczsKICAgIHJlcy5zeiA9IGxlZnQuc3ogKyByaWdodC5zejsKICAgIHJlcy5hY3RpdmUgPSBmYWxzZTsgLy8gTm9kZSBjaGEgY2jhu4kgYWN0aXZlIG7hur91IGPhuqMgMiBjb24gxJHhu4F1IGFjdGl2ZSAoa2jDtG5nIGPhuqduIHRoaeG6v3QgbOG6r20g4bufIMSRw6J5KQogICAgCiAgICByZXMucHJlID0gbGVmdC5wcmU7CiAgICBpZiAobGVmdC5wcmUgPT0gbGVmdC5zeikgcmVzLnByZSArPSByaWdodC5wcmU7CiAgICAKICAgIHJlcy5zdWYgPSByaWdodC5zdWY7CiAgICBpZiAocmlnaHQuc3VmID09IHJpZ2h0LnN6KSByZXMuc3VmICs9IGxlZnQuc3VmOwogICAgCiAgICByZXMubWF4TGVuID0gbWF4KHtsZWZ0Lm1heExlbiwgcmlnaHQubWF4TGVuLCBsZWZ0LnN1ZiArIHJpZ2h0LnByZX0pOwogICAgcmV0dXJuIHJlczsKfQoKdm9pZCBidWlsZChpbnQgaWQsIGludCBsLCBpbnQgcikgewogICAgdHJlZVtpZF0gPSB7MCwgMCwgMCwgciAtIGwgKyAxLCBmYWxzZX07CiAgICBpZiAobCA9PSByKSByZXR1cm47CiAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CiAgICBidWlsZCgyICogaWQsIGwsIG1pZCk7CiAgICBidWlsZCgyICogaWQgKyAxLCBtaWQgKyAxLCByKTsKfQoKdm9pZCB1cGRhdGUoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCBwb3MpIHsKICAgIGlmIChsID09IHIpIHsKICAgICAgICB0cmVlW2lkXSA9IHsxLCAxLCAxLCAxLCB0cnVlfTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CiAgICBpZiAocG9zIDw9IG1pZCkgdXBkYXRlKDIgKiBpZCwgbCwgbWlkLCBwb3MpOwogICAgZWxzZSB1cGRhdGUoMiAqIGlkICsgMSwgbWlkICsgMSwgciwgcG9zKTsKICAgIHRyZWVbaWRdID0gbWVyZ2UodHJlZVsyICogaWRdLCB0cmVlWzIgKiBpZCArIDFdKTsKfQoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsKICAgIGNpbiA+PiBuID4+IHE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gYVtpXS5maXJzdDsKICAgICAgICBhW2ldLnNlY29uZCA9IGk7CiAgICB9CiAgICBzb3J0KGEgKyAxLCBhICsgbiArIDEpOyAvLyBT4bqvcCB44bq/cCBnacOhIHRy4buLIG3huqNuZyDEkeG7gyBrw61jaCBob+G6oXQgZOG6p24gZOG6p24KCiAgICBmb3IgKGludCBpID0gMDsgaSA8IHE7IGkrKykgewogICAgICAgIGNpbiA+PiBxdWVyaWVzW2ldLms7CiAgICAgICAgcXVlcmllc1tpXS5pZCA9IGk7CiAgICB9CiAgICBzb3J0KHF1ZXJpZXMsIHF1ZXJpZXMgKyBxLCBbXShRdWVyeSB4LCBRdWVyeSB5KSB7CiAgICAgICAgcmV0dXJuIHguayA8IHkuazsKICAgIH0pOyAvLyBT4bqvcCB44bq/cCB0cnV5IHbhuqVuIMSR4buDIHjhu60gbMO9IG9mZmxpbmUKCiAgICBidWlsZCgxLCAxLCBuKTsKCiAgICBpbnQgaWR4ID0gMTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcTsgaSsrKSB7CiAgICAgICAgLy8gIkLhuq10IMSRw6huIiBjw6FjIHBo4bqnbiB04butIHRo4buPYSBtw6NuIGFbaWR4XS52YWwgPD0gcXVlcmllc1tpXS5rCiAgICAgICAgd2hpbGUgKGlkeCA8PSBuICYmIGFbaWR4XS5maXJzdCA8PSBxdWVyaWVzW2ldLmspIHsKICAgICAgICAgICAgdXBkYXRlKDEsIDEsIG4sIGFbaWR4XS5zZWNvbmQpOwogICAgICAgICAgICBpZHgrKzsKICAgICAgICB9CiAgICAgICAgYW5zW3F1ZXJpZXNbaV0uaWRdID0gdHJlZVsxXS5tYXhMZW47CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBxOyBpKyspIGNvdXQgPDwgYW5zW2ldIDw8ICJcbiI7CiAgICByZXR1cm4gMDsKfQ==