特殊的排序

现在给你一个长度为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;	
}

猜你喜欢

转载自blog.csdn.net/m0_51794965/article/details/110109210