这个题为什么会爆ll呢 最大不是2的31次方减1吗
by zhangjunru @ 2023-10-23 20:41:28
```cpp
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 1;
#define read(a) {char c;while((c=getchar())>47) a=a*10+(c^48);}
using namespace std;
long long n, c;
int a[30000000];
int zz(int l, int r,int t)
{
int mid;
while (l <= r)
{
mid = l + (r - l) / 2;
if (a[mid] < t)
{
l = mid + 1;
}
else
r = mid - 1;
}
return l;
}
int yy(int l, int r, int t)
{
int mid;
while (l <= r)
{
mid = l + (r - l) / 2;
if (a[mid] <= t)
{
l = mid + 1;
}
else
{
r = mid - 1;
}
}
return l;
}
int main() {
cin >> n >> c;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
sort(a, a + n);
long long ans = 0;
for (int i = 0; i < n; i++)
{
int x=a[i];
int t = x - c;
int l = 0, r = n - 1;
int zt = zz(l, r, t);
int yt = yy(l, r, t);
if(yt!=-1&&zt!=-1)
ans += yt - zt;
}
cout << ans;
return 0;
}
```
@[zhangjunru](/user/1105732) 我也很奇怪,手写的lowe_bound和upper_bound,把ans改成ll才过,int的话测试点3一直过不了
by yiban202241040105 @ 2023-10-24 20:09:18
对啊,我也很奇怪,我是用二分的
by dyzxjzx @ 2023-10-24 22:28:43
我就不一样了,看成了10^30,然后想了半天为什么这题标签没有高精度(大早上没有睡醒)
by SICKO @ 2023-10-29 11:05:23