社区讨论
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 条回复,欢迎继续交流。
正在加载回复...