C. Challenging Cliffs

time limit per test

2 seconds

memory limit per test

256 megabytes

You are a game designer and want to make an obstacle course. The player will walk from left to right. You have n heights of mountains already selected and want to arrange them so that the absolute difference of the heights of the first and last mountains is as small as possible.

In addition, you want to make the game difficult, and since walking uphill or flat is harder than walking downhill, the difficulty of the level will be the number of mountains i (1≤i<n) such that hi≤hi+1 where hi is the height of the i-th mountain. You don't want to waste any of the mountains you modelled, so you have to use all of them.

From all the arrangements that minimize |h1−hn|, find one that is the most difficult. If there are multiple orders that satisfy these requirements, you may find any.

Input

The first line will contain a single integer t (1≤t≤100) --- the number of test cases. Then t test cases follow.

The first line of each test case contains a single integer n (2≤n≤2⋅105) --- the number of mountains.

The second line of each test case contains n integers h1,...,hn (1≤hi≤109), where hi is the height of the i-th mountain.

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

Output

For each test case, output n integers --- the given heights in an order that maximizes the difficulty score among all orders that minimize |h1−hn|.

If there are multiple orders that satisfy these requirements, you may output any.

Example

Input

Copy

复制代码
2
4
4 2 1 2
2
3 1

Output

Copy

复制代码
2 4 1 2 
1 3

Note

In the first test case:

The player begins at height 2, next going up to height 4 increasing the difficulty by 1. After that he will go down to height 1 and the difficulty doesn't change because he is going downhill. Finally the player will go up to height 2 and the difficulty will increase by 1. The absolute difference between the starting height and the end height is equal to 0 and it's minimal. The difficulty is maximal.

In the second test case:

The player begins at height 1, next going up to height 3 increasing the difficulty by 1. The absolute difference between the starting height and the end height is equal to 2 and it's minimal as they are the only heights. The difficulty is maximal.

解题说明:此题是一道模拟题,采用贪心算法, 首先从小到大排序后找到2个下标x,y 使得abs(h[x]-h[y])最小 ,可以发现 1 <= i < x 时 h[i] <= h[i+1] y <= i < n 时h[i] <= h[i+1] 所以把y到n中的数放前面 把1到x中的数放后面 当h[1]!=h[n]的时候 h[i] <= h[i+1]的i的个数最大为n-2 ,当h[1]==h[n]的时候 为n-1。

cpp 复制代码
#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
	int t, n, i; 
	cin >> t;
	while (t--)
	{
		cin >> n; 
		int a[n], m = INT_MAX, j;
		for (i = 0; i < n; i++)
		{
			cin >> a[i];
		}
		sort(a, a + n);
		for (i = 1; i < n; i++) 
		{
			if (a[i] - a[i - 1] < m)
			{
				m = a[i] - a[i - 1];
				j = i;
			}
		} 
		cout << a[j - 1] << " ";
		for (i = j + 1; i < n; i++)
		{
			cout << a[i] << " ";
		}
		for (i = 0; i < j - 1; i++)
		{
			cout << a[i] << " ";
		}
		cout << a[j] << endl;
	}
	return 0;
}
相关推荐
C嘎嘎嵌入式开发17 小时前
(1)100天python从入门到拿捏
开发语言·python
软件开发技术深度爱好者17 小时前
用python制作相册浏览小工具
开发语言·python
2501_9151063218 小时前
JavaScript编程工具有哪些?老前端的实用工具清单与经验分享
开发语言·前端·javascript·ios·小程序·uni-app·iphone
洲覆18 小时前
C++ 模板、泛型与 auto 关键字
开发语言·数据结构·c++
蜀中廖化18 小时前
python VSCode中报错 E501:line too long (81 > 79 characters)
开发语言·vscode·python
消失的旧时光-194318 小时前
Android回退按钮处理方法总结
android·开发语言·kotlin
千里马-horse19 小时前
Async++ 源码分析7--parallel_reduce.h
开发语言·c++·async++·parallel_reduce
量化交易曾小健(金融号)19 小时前
Python美股量化交易填坑记录——3.盈透(Interactive Brokers)证券API接口
开发语言·python
Yupureki19 小时前
从零开始的C++学习生活 6:string的入门使用
c语言·c++·学习·visual studio
Madison-No719 小时前
【C++】探秘string的底层实现
开发语言·c++