社区讨论

92分,WA了第三个点:2e5 1,其余的全是 111....222.....

P1102A-B 数对参与者 4已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo2tei1f
此快照首次捕获于
2023/10/23 19:28
2 年前
此快照最后确认于
2023/10/23 19:28
2 年前
查看原帖
CPP
#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;
int a[200010];

int main()
{
    int n, c;
    cin >> n >> c;
    for (int i=1; i <= n; i ++)
        cin >> a[i];

    int cnt = 0;

    sort (a+1, a+1+n);  //从小到大排序!
    for (int i=1; i <= n; i ++)
    {
        int x = a[i]  + c;
        int l = 1, r = n;
        while (l < r)       //先找到目标值最左边的元素!
        {
            int mid = (l+r) >> 1;
            if (a[mid] >= x) r = mid;
            else l = mid + 1;
        }
        int t1 = r;

        //找到某个数最右边的位置!
        l = 1, r = n;
        while (l < r)
        {
            int mid = (l+r+1) >> 1;
            if (a[mid] <= x) l = mid;
            else r = mid - 1;
        }
        int t2 = r;
        
        if (a[t1] == x && a[t2] == x)
            cnt += t2 - t1 + 1;
    }
    cout << cnt << endl;
    return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...