蒟蒻求助ABC D
  • 板块学术版
  • 楼主20121202Tzy
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/9/14 21:42
  • 上次更新2024/9/15 09:39:32
查看原帖
蒟蒻求助ABC D
1020835
20121202Tzy楼主2024/9/14 21:42

错一个点。。。

#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;
}
2024/9/14 21:42
加载中...