/**
* author: orzvanh14 ( Độc cô cầu đặc )
* created: 18.04.2026 03:56:02
**/
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define nn "\n"
#define pb push_back
const int MAXN = 1e5 + 5;
struct Box {
int val, id;
bool operator<(const Box& other) const {
return val < other.val;
}
};
struct Person {
int t, id;
bool operator<(const Person& other) const {
return t > other.t; // Sắp xếp theo t giảm dần
}
};
int n, m;
Box a[MAXN];
Person queries[MAXN];
int ans[MAXN];
// Segment Tree node: lưu (số lượng hộp, tổng số kẹo)
pair<int, int> tree[4 * MAXN];
void update(int node, int l, int r, int idx, int val) {
if (l == r) {
tree[node].first += 1; // Tăng số lượng hộp thêm 1
tree[node].second += val; // Cộng dồn giá trị kẹo
return;
}
int mid = (l + r) / 2;
if (idx <= mid) update(2 * node, l, mid, idx, val);
else update(2 * node + 1, mid + 1, r, idx, val);
tree[node].first = tree[2 * node].first + tree[2 * node + 1].first;
tree[node].second = tree[2 * node].second + tree[2 * node + 1].second;
}
pair<int, int> query(int node, int l, int r, int ql, int qr) {
if (ql > r || qr < l) return {0, 0};
if (ql <= l && r <= qr) return tree[node];
int mid = (l + r) / 2;
pair<int, int> left_res = query(2 * node, l, mid, ql, qr);
pair<int, int> right_res = query(2 * node + 1, mid + 1, r, ql, qr);
return {left_res.first + right_res.first, left_res.second + right_res.second};
}
signed main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i].val;
a[i].id = i;
}
cin >> m;
for (int i = 1; i <= m; i++) {
cin >> queries[i].t;
queries[i].id = i;
}
// Sắp xếp hộp kẹo theo lượng kẹo tăng dần
sort(a + 1, a + n + 1);
// Sắp xếp người theo ngưỡng t giảm dần
sort(queries + 1, queries + m + 1);
int box_ptr = n;
for (int i = 1; i <= m; i++) {
int t_curr = queries[i].t;
int person_id = queries[i].id;
// Đưa tất cả các hộp có số kẹo >= t_curr vào Segment Tree
while (box_ptr >= 1 && a[box_ptr].val >= t_curr) {
update(1, 1, n, box_ptr, a[box_ptr].val);
box_ptr--;
}
// Lấy kết quả từ đoạn [box_ptr + 1, n]
pair<int, int> res = query(1, 1, n, box_ptr + 1, n);
int count_boxes = res.first;
int total_candies = res.second;
// Tính số kẹo người này ăn được
ans[person_id] = total_candies - count_boxes * (t_curr - 1);
}
// In kết quả theo thứ tự truy vấn ban đầu
for (int i = 1; i <= m; i++) {
cout << ans[i] << nn;
}
return 0;
}
LyoqCiAqICAgIGF1dGhvcjogIG9yenZhbmgxNCAoIMSQ4buZYyBjw7QgY+G6p3UgxJHhurdjICkKICogICAgY3JlYXRlZDogMTguMDQuMjAyNiAwMzo1NjowMgoqKi8KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgbm4gIlxuIgojZGVmaW5lIHBiIHB1c2hfYmFjawoKY29uc3QgaW50IE1BWE4gPSAxZTUgKyA1OwoKc3RydWN0IEJveCB7CiAgICBpbnQgdmFsLCBpZDsKICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEJveCYgb3RoZXIpIGNvbnN0IHsKICAgICAgICByZXR1cm4gdmFsIDwgb3RoZXIudmFsOwogICAgfQp9OwoKc3RydWN0IFBlcnNvbiB7CiAgICBpbnQgdCwgaWQ7CiAgICBib29sIG9wZXJhdG9yPChjb25zdCBQZXJzb24mIG90aGVyKSBjb25zdCB7CiAgICAgICAgcmV0dXJuIHQgPiBvdGhlci50OyAvLyBT4bqvcCB44bq/cCB0aGVvIHQgZ2nhuqNtIGThuqduCiAgICB9Cn07CgppbnQgbiwgbTsKQm94IGFbTUFYTl07ClBlcnNvbiBxdWVyaWVzW01BWE5dOwppbnQgYW5zW01BWE5dOwoKLy8gU2VnbWVudCBUcmVlIG5vZGU6IGzGsHUgKHPhu5EgbMaw4bujbmcgaOG7mXAsIHThu5VuZyBz4buRIGvhurlvKQpwYWlyPGludCwgaW50PiB0cmVlWzQgKiBNQVhOXTsKCnZvaWQgdXBkYXRlKGludCBub2RlLCBpbnQgbCwgaW50IHIsIGludCBpZHgsIGludCB2YWwpIHsKICAgIGlmIChsID09IHIpIHsKICAgICAgICB0cmVlW25vZGVdLmZpcnN0ICs9IDE7ICAgLy8gVMSDbmcgc+G7kSBsxrDhu6NuZyBo4buZcCB0aMOqbSAxCiAgICAgICAgdHJlZVtub2RlXS5zZWNvbmQgKz0gdmFsOyAvLyBD4buZbmcgZOG7k24gZ2nDoSB0cuG7iyBr4bq5bwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBtaWQgPSAobCArIHIpIC8gMjsKICAgIGlmIChpZHggPD0gbWlkKSB1cGRhdGUoMiAqIG5vZGUsIGwsIG1pZCwgaWR4LCB2YWwpOwogICAgZWxzZSB1cGRhdGUoMiAqIG5vZGUgKyAxLCBtaWQgKyAxLCByLCBpZHgsIHZhbCk7CiAgICAKICAgIHRyZWVbbm9kZV0uZmlyc3QgPSB0cmVlWzIgKiBub2RlXS5maXJzdCArIHRyZWVbMiAqIG5vZGUgKyAxXS5maXJzdDsKICAgIHRyZWVbbm9kZV0uc2Vjb25kID0gdHJlZVsyICogbm9kZV0uc2Vjb25kICsgdHJlZVsyICogbm9kZSArIDFdLnNlY29uZDsKfQoKcGFpcjxpbnQsIGludD4gcXVlcnkoaW50IG5vZGUsIGludCBsLCBpbnQgciwgaW50IHFsLCBpbnQgcXIpIHsKICAgIGlmIChxbCA+IHIgfHwgcXIgPCBsKSByZXR1cm4gezAsIDB9OwogICAgaWYgKHFsIDw9IGwgJiYgciA8PSBxcikgcmV0dXJuIHRyZWVbbm9kZV07CiAgICAKICAgIGludCBtaWQgPSAobCArIHIpIC8gMjsKICAgIHBhaXI8aW50LCBpbnQ+IGxlZnRfcmVzID0gcXVlcnkoMiAqIG5vZGUsIGwsIG1pZCwgcWwsIHFyKTsKICAgIHBhaXI8aW50LCBpbnQ+IHJpZ2h0X3JlcyA9IHF1ZXJ5KDIgKiBub2RlICsgMSwgbWlkICsgMSwgciwgcWwsIHFyKTsKICAgIAogICAgcmV0dXJuIHtsZWZ0X3Jlcy5maXJzdCArIHJpZ2h0X3Jlcy5maXJzdCwgbGVmdF9yZXMuc2Vjb25kICsgcmlnaHRfcmVzLnNlY29uZH07Cn0KCnNpZ25lZCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICAKICAgIGNpbiA+PiBuOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgY2luID4+IGFbaV0udmFsOwogICAgICAgIGFbaV0uaWQgPSBpOwogICAgfQogICAgCiAgICBjaW4gPj4gbTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykgewogICAgICAgIGNpbiA+PiBxdWVyaWVzW2ldLnQ7CiAgICAgICAgcXVlcmllc1tpXS5pZCA9IGk7CiAgICB9CiAgICAKICAgIC8vIFPhuq9wIHjhur9wIGjhu5lwIGvhurlvIHRoZW8gbMaw4bujbmcga+G6uW8gdMSDbmcgZOG6p24KICAgIHNvcnQoYSArIDEsIGEgKyBuICsgMSk7CiAgICAKICAgIC8vIFPhuq9wIHjhur9wIG5nxrDhu51pIHRoZW8gbmfGsOG7oW5nIHQgZ2nhuqNtIGThuqduCiAgICBzb3J0KHF1ZXJpZXMgKyAxLCBxdWVyaWVzICsgbSArIDEpOwogICAgCiAgICBpbnQgYm94X3B0ciA9IG47CiAgICAKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykgewogICAgICAgIGludCB0X2N1cnIgPSBxdWVyaWVzW2ldLnQ7CiAgICAgICAgaW50IHBlcnNvbl9pZCA9IHF1ZXJpZXNbaV0uaWQ7CiAgICAgICAgCiAgICAgICAgLy8gxJDGsGEgdOG6pXQgY+G6oyBjw6FjIGjhu5lwIGPDsyBz4buRIGvhurlvID49IHRfY3VyciB2w6BvIFNlZ21lbnQgVHJlZQogICAgICAgIHdoaWxlIChib3hfcHRyID49IDEgJiYgYVtib3hfcHRyXS52YWwgPj0gdF9jdXJyKSB7CiAgICAgICAgICAgIHVwZGF0ZSgxLCAxLCBuLCBib3hfcHRyLCBhW2JveF9wdHJdLnZhbCk7CiAgICAgICAgICAgIGJveF9wdHItLTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gTOG6pXkga+G6v3QgcXXhuqMgdOG7qyDEkW/huqFuIFtib3hfcHRyICsgMSwgbl0KICAgICAgICBwYWlyPGludCwgaW50PiByZXMgPSBxdWVyeSgxLCAxLCBuLCBib3hfcHRyICsgMSwgbik7CiAgICAgICAgaW50IGNvdW50X2JveGVzID0gcmVzLmZpcnN0OwogICAgICAgIGludCB0b3RhbF9jYW5kaWVzID0gcmVzLnNlY29uZDsKICAgICAgICAKICAgICAgICAvLyBUw61uaCBz4buRIGvhurlvIG5nxrDhu51pIG7DoHkgxINuIMSRxrDhu6NjCiAgICAgICAgYW5zW3BlcnNvbl9pZF0gPSB0b3RhbF9jYW5kaWVzIC0gY291bnRfYm94ZXMgKiAodF9jdXJyIC0gMSk7CiAgICB9CiAgICAKICAgIC8vIEluIGvhur90IHF14bqjIHRoZW8gdGjhu6kgdOG7sSB0cnV5IHbhuqVuIGJhbiDEkeG6p3UKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykgewogICAgICAgIGNvdXQgPDwgYW5zW2ldIDw8IG5uOwogICAgfQogICAgCiAgICByZXR1cm4gMDsKfQ==