P10830 [COTS 2023] 平均数 Prosjek
题目背景
译自 [Izborne Pripreme 2023 (Croatian IOI/CEOI Team Selection)](https://hsin.hr/pripreme2023/) D1T2。$\texttt{3s,0.5G}$。
祝 NaCly_Fish 生日快乐!(2024.7.28)
感谢 @Rainbow_qwq 修复交互库。警示后人:慎用 `multiset.count`(复杂度可退化至线性)。
题目描述
在黑板上有 $N$ 个非负整数。在一次操作中,可以选择黑板上的两个整数 $a,b$ 满足 $2\mid (a+b)$,将 $a,b$ 从黑板上擦去,然后写下 $(a+b)/2$。注意到每次操作后,黑板上的数都是整数。
试判断是否能让黑板上只剩下一个数。如果可以的话,还需要给出一组解。
输入格式
**本题单个测试点内有多组测试数据。**
第一行,一个正整数 $T$,代表数据组数。
接下来依次描述 $T$ 组数据。
对于每组数据,第一行,一个正整数 $N$,代表黑板上数的数量。
第二行,$N$ 个非负整数,描述黑板上的数。
输出格式
对于每组数据,输出若干行。
如果不可行,输出一行一个 $\texttt{-1}$;
否则,输出 $(N-1)$ 行,每行两个整数,表示每次要擦除的数。你需要保证操作的数是存在的,且它们的和能被 $2$ 整除。
说明/提示
#### 样例解释
样例 $2$ 解释:$[\boldsymbol{\textcolor{red}{1}},2,3,4,\boldsymbol{\textcolor{red}{5}},6] \to [\boldsymbol{\textcolor{red}{3}},2,\boldsymbol{\textcolor{red}{3}},4,6]\to [3,2,\boldsymbol{\textcolor{red}{4}},\boldsymbol{\textcolor{red}{6}}]\to [\boldsymbol{\textcolor{red}{5}},\boldsymbol{\textcolor{red}{3}},2]\to [\boldsymbol{\textcolor{red}{4}},\boldsymbol{\textcolor{red}{2}}]\to [3]$。
#### 数据范围
对于 $100\%$ 的数据,保证:
- $1\le T\le 10^5$;
- $1\le N,\sum N\le 10^6$;
- $0\le a_i\le 10^{18}$。
| 子任务编号 | 分值 | 约束 |
|:-----:|:------:|:-------:|
| $1$ | $9$ | $T\le 100$,$N\le 7$ |
| $2$ | $23$ | $T\le 100$,$a_i\le 10$ |
| $3$ | $16$ | $a_i$ 都为偶数 |
| $4$ | $52$ | 无额外约束 |