#include namespace { #pragma GCC diagnostic ignored "-Wunused-function" #include #pragma GCC diagnostic warning "-Wunused-function" using namespace std; using namespace atcoder; #define rep(i,n) for(int i = 0; i < (int)(n); i++) #define rrep(i,n) for(int i = (int)(n) - 1; i >= 0; i--) #define all(x) begin(x), end(x) unsigned long long res_small[100001]; int ptr_inc_ev = 0; pair inc_ev[100001]; // 10^7.5 = 31622776.6... int ptr_dec_ev = 0; unsigned long long dec_ev[31622776]; template void add_sub(T t) { unsigned int sq = sqrt(t); for (unsigned int i = 1; i <= sq; i++) { res_small[i] += t / i; } unsigned int q = t / (sq + 1); inc_ev[ptr_inc_ev++] = {sq + 1, q}; for (; q >= 1; q--) { dec_ev[ptr_dec_ev++] = t / q + 1; } } void add(unsigned long long t) { if (in_range(t)) add_sub(t); else add_sub(t); } template void radix_sort(int sz) { assert (0 <= sz && sz <= 31622776); span sp1(a, a + sz); static int ptr[(1 << 17)+1]; static unsigned long long b[31622776]; for (auto x : sp1) ptr[(x & ((1 << 17) - 1))+1]++; for (int i = 0; i < 1 << 17; i++) ptr[i+1] += ptr[i]; for (auto x : sp1) b[ptr[x & ((1 << 17) - 1)]++] = x; memset(ptr, 0, sizeof(ptr)); span sp2(b, b + sp1.size()); for (auto x : sp2) ptr[(x >> 17) + 1]++; for (int i = 0; i < 1 << 17; i++) ptr[i+1] += ptr[i]; for (auto x : sp2) a[ptr[(x >> 17)]++] = x; } } int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vector s(n); rep(i, n) cin >> s[i]; int q; cin >> q; long long from = -1, to = -1; rep(i, q) { long long t, f; cin >> t >> f; if (to < t) add(to - from), from = t, to = t + f; else to += f; } add(to - from); ranges::sort(inc_ev, inc_ev + ptr_inc_ev, {}, &pair::first); radix_sort(ptr_dec_ev); vector ord(n); iota(ord.begin(), ord.end(), 0); sort(ord.begin(), ord.end(), [&](int i, int j) { return s[i] < s[j]; }); vector ans(n); unsigned long long now = 0; int pi = 0, pd = 0; for (int i : ord) { while (pi < ptr_inc_ev && inc_ev[pi].first <= s[i]) now += inc_ev[pi++].second; while (pd < ptr_dec_ev && dec_ev[pd] <= s[i]) now--, pd++; ans[i] = s[i] <= 100000 ? res_small[s[i]] + now : now; } for (auto x : ans) cout << x << '\n'; }