time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Given an array a� of length n�, containing integers. And there are two initially empty arrays b� and c�. You need to add each element of array a� to exactly one of the arrays b� or c�, in order to satisfy the following conditions:
Output the arrays b� and c� that can be obtained, or output −1−1 if they do not exist.
Input
Each test consists of multiple test cases. The first line contains a single integer t� (1≤t≤5001≤�≤500) — the number of test cases. The description of the test cases follows.
The first line of each test case contains a single integer n� (2≤n≤1002≤�≤100) — the length of array a�.
The second line of each test case contains n� integers a1,a2,…,an�1,�2,…,�� (1≤ai≤1091≤��≤109) — the elements of array a�.
Output
For each test case, output a single integer −1−1 if a solution does not exist.
Otherwise, in the first line, output two integers lb�� and lc�� — the lengths of arrays b� and c� respectively.
In the second line, output lb�� integers b1,b2,…,blb�1,�2,…,��� — the elements of array b�.
In the third line, output lc�� integers c1,c2,…,clc�1,�2,…,��� — the elements of array c�.
If there are multiple solutions, output any of them. You can output the elements of the arrays in any order.
Example
input
Copy
5
3
2 2 2
5
1 2 3 4 5
3
1 3 5
7
1 7 7 2 9 1 4
5
4 8 12 12 4
output
Copy
-1 3 2 1 3 5 2 4 1 2 1 3 5 2 5 1 1 2 4 7 7 9 3 2 4 8 4 12 12
Note
In the first test case, a solution does not exist.
In the second test case, we can obtain b=[1,3,5]�=[1,3,5] and c=[2,4]�=[2,4]. Then elements 22 and 44 do not divide elements 1,31,3 and 55.
In the fifth test case, we can obtain b=[4,8,4]�=[4,8,4] and c=[12,12]�=[12,12].
解题说明:水题,对数列排序,只要让数列a中的最小值放入数列b,其他值都放入数列c中就可以,前提是数列a不是同一个数。
#include
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
sort(a, a + n);
if (a[0] == a[n - 1])
{
cout << -1 << endl;
}
else
{
int i = 1;
while (a[i] == a[0])
{
i++;
}
cout << i << ' ' << n - i << endl;
for (int j = 0; j < i; j++)
{
cout << a[j] << ' ';
}
cout << endl;
for (int j = i; j < n; j++)
{
cout << a[j] << ' ';
}
cout << endl;
}
}
return 0;
}