测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A17460. 能量节点

填空题 困难

题目描述

能量节点

题目描述

数轴上分布着 n 个能量节点,第 i 个节点的坐标为 xi 。

当两个节点的距离小于等于 d 时,会产生能量共鸣。

求一共有多少组节点会发生能量共鸣。

输入格式

第一行,两个整数表示 n 与 d。

第二行,n 个整数,表示 x1,x2,…,xn 。

输出格式

单个整数:表示有多少对点可以会产生能量共鸣。

输入样例

4 25
30 40 10 20

输出样例

5

说明提示

1≤n≤100,000,

1≤d≤1,000,000,000,

1≤xi≤1,000,000,000。

参考答案

#include<iostream> #include<algorithm> int main() { int n, d; std::cin >> n >> d; int a[100005]; for(int i = 1;i <= n; ++i) std::cin >> a[i]; std::sort(a + 1, a + n + 1); long long pair = 0; for(int i = 1, j = 1; i <= n; ++i) { while(a[j] - a[i] <= d && j <= n) j++; pair += j - i - 1; } std::cout << pair; }
上一题 下一题