49分,救救孩子!
  • 板块P1102 A-B 数对
  • 楼主maoding
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/5/28 17:52
  • 上次更新2023/10/28 00:26:45
查看原帖
49分,救救孩子!
550620
maoding楼主2022/5/28 17:52

二分查找做的

#include <iostream>
#include <algorithm>
using namespace std;

int a[1000010], b[1000010];

int main()
{
    int n, k;
    cin >> n >> k;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
        b[i] = a[i];
    }
    sort(a + 1, a + n + 1);
    sort(b + 1, b + n + 1);
    
    int ans = 0;
    for (int x = -1000; x <= 1000; x++)
    {
        int cnt1 = (upper_bound(a + 1, a + n + 1, x) - a) - (lower_bound(a + 1, a + n + 1, x) - a);
        int cnt2 = (upper_bound(b + 1, b + n + 1, x - k) - b) - (lower_bound(b + 1, b + n + 1, x - k) - b);
        ans += cnt1 * cnt2;
    }
    cout << ans << endl;
    return 0;
}
2022/5/28 17:52
加载中...