求助,部分sort的自定义函数知识点不懂
  • 板块P1102 A-B 数对
  • 楼主flashfear
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/11/25 22:26
  • 上次更新2024/11/26 13:21:14
查看原帖
求助,部分sort的自定义函数知识点不懂
1526602
flashfear楼主2024/11/25 22:26

我在下面标注了,帮帮孩子吧

#include <bits/stdc++.h>

using namespace std;

int arr[200020];

bool cmp(int x, int y) {
    return x < y;
}//这里换成return x<=y;就有wa和tle了。
//百思不得其解,快把孩子逼疯了 >.<

int main() {
    int n, c;
    cin >> n >> c;

    for (int i = 1; i <= n; i++)
        cin >> arr[i];

    sort(arr + 1, arr + n + 1, cmp);

    int b         = 1, tmp;
    long long sum = 0;
    while (b <= n) {
        int l = b + 1, r = n;
        while (l < r) {
            int mid = (l + r) / 2;
            if (arr[mid] >= arr[b] + c)
                r = mid;
            else
                l = mid + 1;
        }

        if (arr[l] == arr[b] + c)
            tmp = l;
        else {
            b++;
            continue;
        }
        r = n;
        while (l < r) {
            int mid = (l + r + 1) / 2;
            if (arr[mid] <= arr[b] + c)
                l = mid;
            else
                r = mid - 1;
        }
        sum += l - tmp + 1;
        b++;
    }

    cout << sum;

    system("pause");
    return 0;
}
2024/11/25 22:26
加载中...