南邮 OJ 1110 奇数排序

奇数排序

时间限制(普通/Java) :  2000 MS/ 6000 MS          运行内存限制 : 65536 KByte
总提交 : 1361            测试通过 : 355 

比赛描述

给定n个正整数,对其中的奇数按递增次序排序。



输入

第一行是一个正整数:测试用例数目,最多为5。之后,每个测试用例包括两行:

l       第1行给出整数数目n,1≤n≤100000,每个整数范围为 [0,100000)

l       第2行给出n个整数

输出

对于每个测试用例:

l       输出“Case #:”,#表示序号

l       输出奇数排序后的n个整数

注意:输出部分的结尾要求包含一个多余的空行。

样例输入

2
3
4 2 1
3
3 2 1

样例输出

Case 1:
4 2 1
Case 2:
1 2 3

题目来源

算法与数据结构设计2009


#include<iostream>
#include<algorithm>
using namespace std;

long a[100000],b[100000],pos[100000];

int main(){
	int N,CaseNo=0;
	long n,i,j;
	cin>>N;
	while(N--){
		cin>>n;
		for(i=0,j=0;i<n;++i){
			cin>>a[i];
			if(a[i]&1){
				b[j] = a[i];
				pos[j] = i;
				++j;
			}
		}
		sort(b,b+j);
		for(i=0;i<j;++i){
			a[pos[i]] = b[i];
		}
		cout<<"Case "<<++CaseNo<<":"<<endl;
		cout<<a[0];
		for(i=1;i<n;++i){
			cout<<" "<<a[i];
		}
		cout<<endl;
	}
}





你可能感兴趣的:(ACM,南邮OJ,奇数排序)