C. Number of Pairs

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given an array a� of n� integers. Find the number of pairs (i,j)(�,�) (1≤i<j≤n1≤�<�≤�) where the sum of ai+aj��+�� is greater than or equal to l� and less than or equal to r� (that is, l≤ai+aj≤r�≤��+��≤�).

For example, if n=3�=3, a=[5,1,2]�=[5,1,2], l=4�=4 and r=7�=7, then two pairs are suitable:

  • i=1�=1 and j=2�=2 (4≤5+1≤74≤5+1≤7);
  • i=1�=1 and j=3�=3 (4≤5+2≤74≤5+2≤7).

Input

The first line contains an integer t� (1≤t≤1041≤�≤104). Then t� test cases follow.

The first line of each test case contains three integers n,l,r�,�,� (1≤n≤2⋅1051≤�≤2⋅105, 1≤l≤r≤1091≤�≤�≤109) --- the length of the array and the limits on the sum in the pair.

The second line contains n� integers a1,a2,...,an�1,�2,...,�� (1≤ai≤1091≤��≤109).

It is guaranteed that the sum of n� overall test cases does not exceed 2⋅1052⋅105.

Output

For each test case, output a single integer --- the number of index pairs (i,j)(�,�) (i<j�<�), such that l≤ai+aj≤r�≤��+��≤�.

Example

input

Copy

复制代码
4
3 4 7
5 1 2
5 5 8
5 1 2 4 3
4 100 1000
1 1 1 1
5 9 13
2 5 5 1 1

output

Copy

复制代码
2
7
0
1

解题说明:此题是一道数学题,为了找到这样数字组合,可以先对数列进行排序,排序后,用lower_bound和upper_bound找到边界,然后中间的就都是满足条件的数字对。

lower_bound返回第一个大于等于val的元素的迭代器

upper_bound返回第一个大于val的元素的迭代器

cpp 复制代码
#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	int t;
	cin >> t;
	while (t--)
	{
		long long int n, l, r, k = 0;
		cin >> n >> l >> r;
		int a[200001];
		for (int i = 0; i < n; i++)
		{
			cin >> a[i];
		}
		sort(a, a + n);
		for (int i = 0; i < n; i++)
		{
			int j = lower_bound(a + i + 1, a + n, l - a[i]) - a;
			int p = upper_bound(a + i + 1, a + n, r - a[i]) - a;
			k = k + p - j;
		}
		cout << k << endl;
	}
	return 0;
}
相关推荐
萧鼎3 分钟前
Python 包管理的“超音速”革命:全面上手 uv 工具链
开发语言·python·uv
Anastasiozzzz32 分钟前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
刘琦沛在进步35 分钟前
【C / C++】引用和函数重载的介绍
c语言·开发语言·c++
机器视觉的发动机1 小时前
AI算力中心的能耗挑战与未来破局之路
开发语言·人工智能·自动化·视觉检测·机器视觉
HyperAI超神经1 小时前
在线教程|DeepSeek-OCR 2公式/表格解析同步改善,以低视觉token成本实现近4%的性能跃迁
开发语言·人工智能·深度学习·神经网络·机器学习·ocr·创业创新
R_.L1 小时前
【QT】常用控件(按钮类控件、显示类控件、输入类控件、多元素控件、容器类控件、布局管理器)
开发语言·qt
Zach_yuan1 小时前
自定义协议:实现网络计算器
linux·服务器·开发语言·网络
云姜.1 小时前
java多态
java·开发语言·c++
CoderCodingNo1 小时前
【GESP】C++五级练习题 luogu-P1865 A % B Problem
开发语言·c++·算法
陳10302 小时前
C++:红黑树
开发语言·c++