D 夹缝中求和
完全数
https://ac.nowcoder.com/acm/contest/8997/A
其实对于数组的顺序打乱并不会影响,因为都是要求对所有i,j分别匹配求出能满足条件的解的个数,所以排序加二分即可。
include
include
include
include
include<memory.h>
include
include
define pii pair<int,int>
define FAST ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
typedef long long ll;
const int Max = 2e5 + 5;
int lst[Max];
int Mod = 1e9 + 7;
int main()
{
FAST;
int n, x, y;cin >> n >> x >> y;
for (int i = 1;i <= n;i++)
{
cin >> lst[i];
}
ll sum = 0;
sort(lst + 1, lst + n + 1);
for (int i = 1;i < n;i++)
{
int l = i+1, r = n;
while (l <= r)
{
int mid = (l + r) / 2;
if (lst[mid] + lst[i] < x)l = mid + 1;
else r = mid - 1;
}
int le = l;
r = n;
while (l <= r)
{
int mid = (l + r) / 2;
if (lst[mid] + lst[i] <= y)l = mid + 1;
else r = mid - 1;
}
if (l != n + 1)
{
l--;
sum += (l - le + 1);
}
}
cout << sum;
}