C. Game of Mathletes

time limit per test

2 seconds

memory limit per test

256 megabytes

Alice and Bob are playing a game. There are n (n is even) integers written on a blackboard, represented by x1,x2,...,xn. There is also a given integer k and an integer score that is initially 0. The game lasts for n2 turns, in which the following events happen sequentially:

  • Alice selects an integer from the blackboard and erases it. Let's call Alice's chosen integer a.
  • Bob selects an integer from the blackboard and erases it. Let's call Bob's chosen integer b.
  • If a+b=k, add 1 to score.

Alice is playing to minimize the score while Bob is playing to maximize the score. Assuming both players use optimal strategies, what is the score after the game ends?

Input

The first line contains an integer t (1≤t≤104) --- the number of test cases.

The first line of each test case contains two integers n and k (2≤n≤2⋅105,1≤k≤2⋅n, n is even).

The second line of each test case contains n integers x1,x2,...,xn (1≤xi≤n) --- the integers on the blackboard.

It is guaranteed that the sum of n over all test cases does not exceed 2⋅105.

Output

For each test case, output the score if both players play optimally.

Example

Input

Copy

复制代码

4

4 4

1 2 3 2

8 15

1 2 3 4 5 6 7 8

6 1

1 1 1 1 1 1

16 9

3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3

Output

Copy

复制代码
2
1
0
4

Note

In the first test case, one way the game may go is as follows:

  • Alice selects 1 and Bob selects 3. The score increases as 1+3=4. Now the two integers remaining on the blackboard are 2 and 2.
  • Alice and Bob both select 2. The score increases as 2+2=4.
  • The game ends as the blackboard now has no integers.

In the third test case, it is impossible for the sum of Alice and Bob's selected integers to be 1, so we answer 0.

Note that this is just an example of how the game may proceed for demonstration purposes. This may not be Alice or Bob's most optimal strategies.

解题说明:此题是一道模拟题,其实就是找出数列中存在多少对数字,其和为K。可以用map来存储数字,求出对数即可。

cpp 复制代码
#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
	int t;
	cin >> t;
	while (t--)
	{
		int n, m, i, j, ans = 0, temp = 0;
		map<int, int>mp;
		cin >> n >> m;
		int a[200005];
		for (i = 0; i < n; i++)
		{
			cin >> a[i];
			if (mp[m - a[i]] != 0)
			{
				ans++;
				mp[m - a[i]]--;
			}
			else
			{
				mp[a[i]]++;
			}
		}
		cout << ans << "\n";
	}
}
相关推荐
冷雨夜中漫步8 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
HABuo9 小时前
【linux文件系统】磁盘结构&文件系统详谈
linux·运维·服务器·c语言·c++·ubuntu·centos
m0_736919109 小时前
C++代码风格检查工具
开发语言·c++·算法
2501_9449347310 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
黎雁·泠崖10 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_7634724611 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
TechWJ11 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
lly20240612 小时前
C++ 文件和流
开发语言
m0_7066532312 小时前
分布式系统安全通信
开发语言·c++·算法
寻寻觅觅☆12 小时前
东华OJ-基础题-104-A == B ?(C++)
开发语言·c++