错一个点。。。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, q, l, r, xx[200001], s[200001];
struct node
{
ll x, p;
}a[200001];
bool cmp (const node a, const node b)
{
return a.x < b.x;
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i].x;
for (int i = 1; i <= n; i++) cin >> a[i].p;
sort(a + 1, a + n + 1, cmp);
for (int i = 1; i <= n; i++)
{
s[i] = s[i - 1] + a[i].p;
xx[i] = a[i].x;
}
cin >> q;
while (q--)
{
cin >> l >> r;
ll left = lower_bound(xx + 1, xx + n + 1, l) - xx, right = lower_bound(xx + 1, xx + n + 1, r) - xx;
if (left >= n + 1) left = n;
if (right >= n + 1) right = n;
if (xx[right] > r) --right;
cout << s[right] - s[left - 1] << '\n';
}
return 0;
}