解题思路:
对比各位大佬的二分还是map,我这个算是非常朴素简单的了,只是数据太大就会超时,我的思路就是先把每个输入的数排序,然后一个挨着一个开始找,当然中间加了判断条件,会减少很多循环次数。
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
int n, num, sum, ans[200005], flag;
int main()
{
cin >> n >> num;
int i, o;
for (i = 0; i < n; ++i) cin >> ans[i];
sort(ans, ans + n);
for (i = 0; i < n; ++i) {
for (o = i + 1; o < n; ++o) {
if (ans[i] + num == ans[o]) ++sum;
else if (ans[i] + num < ans[o]) break;
}
}
cout << sum;
return 0;
}