欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

特殊的排序

程序员文章站 2022-06-19 11:39:30
现在给你一个长度为n的序列a,你可以根据需要执行下面的操作任意次。对于任意两个数字ai和aj,如果ai​+aj​的和是奇数,则可以将这两个数字进行交换。现在,我们想让排出的序列字典序最小,那么得到序列是?P.S.字典序,对于两个序列,先比较第一位,如果第一位相同,则比较第二位,第二位也相同,就比较第三位……如果所有位置都相同,则两个序列一样大。如果不同,则根据这一位上的大小,得到结果。数字大的序列比较大。输入格式第一行一个数字n,代表数字的数量。第二行n个空格间隔的整数,第i个数字代表序列中...

现在给你一个长度为n的序列a,你可以根据需要执行下面的操作任意次。
对于任意两个数字ai和aj,如果ai​+aj​的和是奇数,则可以将这两个数字进行交换。

现在,我们想让排出的序列字典序最小,那么得到序列是?

P.S.
字典序,对于两个序列,先比较第一位,如果第一位相同,则比较第二位,第二位也相同,就比较第三位……如果所有位置都相同,则两个序列一样大。
如果不同,则根据这一位上的大小,得到结果。数字大的序列比较大。

输入格式
第一行一个数字n,代表数字的数量。
第二行n个空格间隔的整数,第i个数字代表序列中的第i个数字ai
0 < n < 1000
0 < ai < 10000

输出格式
输出只有一行,为n个由空格间隔的整数。

样例输入
3
1 7 4

样例输出
1 4 7

#include<iostream>
#include<algorithm>
using namespace std;
int a[1005];
bool temp[2];
int main(){
	int n;	
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
		temp[a[i]%2]=true;
	}
	if(temp[0]&&temp[1])
		sort(a,a+n);
	for(int i=0;i<n;i++)
		cout<<a[i]<<" ";
	return 0;	
}

本文地址:https://blog.csdn.net/m0_51794965/article/details/110109210

相关标签: ACM竞赛习题