股价排序问题
时间限制(普通/Java) :
1000 MS/ 3000 MS 运行内存限制 : 81920 KByte
总提交 : 403 测试通过 : 79
总提交 : 403 测试通过 : 79
比赛描述
小郑同学在投资股票时常常遇到排序问题:
给定股价序列,
如果已按从小到
大顺序排好了,则不需要处理,输出“
N/A
”;否则,需要从小到大顺序排序,
输出排序后的股价序列。请你帮他解决这个问题。
小郑同学在投资股票时常常遇到排序问题:给定股价序列,如果已按从小到大顺序排好了,则不需要处理,输出“N/A”;否则,需要从小到大顺序排序,输出排序后的股价序列。请你帮他解决这个问题。
输入
输入包括多个测试用例,首先给出测试用例数N(1≤N≤20),接着给出N个测试用例。每一个测试用例包括一行,每一行包含以空格分隔的多个整数,第一个整数表示股价序列大小M(1≤M≤1000),接着给出M个股价。
输出
输出包括多行,对于每个测试用例输出一行,输出“N/A”,或者以空格分隔的股价序列。
样例输入
3
3 1 2 3
5 5 4 3 2 1
6 6 6 7 8 7 9
样例输出
N/A
1 2 3 4 5
6 6 7 7 8 9
题目来源
NUPT
#include<iostream>
#include<set>
using namespace std;
int main(){
bool isSorted, isFirst;
int N, M, num, lastNum;
multiset<int> iSet;
cin>>N;
while(N--){
cin>>M;
iSet.clear();
isSorted = 1;
isFirst = 1;
while(M--){
cin>>num;
if(isFirst){
lastNum = num;
isFirst = 0;
}else if(isSorted == 1){
if(num < lastNum){
isSorted = 0;
}
lastNum = num;
}
iSet.insert(num);
}
if(isSorted){
cout<<"N/A"<<endl;
}else{
multiset<int>::iterator it = iSet.begin();
cout<<*it;
for(it++; it!=iSet.end(); it++){
cout<<' '<<*it;
}
cout<<endl;
}
}
}