当前位置:   article > 正文

CF-Round #633-div2-B题_cf round 633div.2 b,c,d

cf round 633div.2 b,c,d

CF-Round #633-div2-B题

传送门

这道题思维。

题目大意:给你一个序列,让你对这个序列重新排列,输出一个序列满足下列要求:
|a1−a2|≤|a2−a3|≤…≤|an−1−an|

思路:我们把这个序列sort一下,之后从中间开始,双指针右左分别输出就行啦~
这样可以保证后面相减的差大于前面相减的差。
为啥?画一下图就知道了。
1
emmm图画的丝丝丑。。
不过还是可以看清楚的!

代码部分:

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;

int t;
int n;
int a[N];

int main()
{
	cin >> t;
	while (t--)
	{
		scanf ("%d", &n);
		for (int i = 1; i <= n; i++)
		{
			scanf ("%d", &a[i]);
		}
		sort(a + 1, a + n + 1);
		int l = n / 2, r = n / 2 + 1;
		for (; l >= 1 && r <= n; l--, r++)
		{
			cout << a[r] << " " << a[l] << " ";
		}
		if (n & 1)
		{
			cout << a[n];
		}
		cout << endl;
	}
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/912633
推荐阅读
相关标签
  

闽ICP备14008679号