天天看點

股價排序問題 NOJ 1683

股價排序問題

時間限制(普通/Java)  :  1000 MS/ 3000 MS          運作記憶體限制 : 81920 KByte

總送出 : 398            測試通過 : 76 

題目描述

小鄭同學在投資股票時常常遇到排序問題:

給定股價序列,

如果已按從小到

大順序排好了,則不需要處理,輸出“

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

水題就不廢話了==

實作代碼:

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
int N,M;
int main()
{
    scanf("%d",&N);
    while(N--)
    {
        scanf("%d",&M);
        int *a=new int[M+2];
        for(int i=0;i<M;i++)
        {
            scanf("%d",&a[i]);
        }
        int flag=1;
        for(int i=0;i<M-1;i++)
        {
            if(a[i]>a[i+1])
            {
                flag=0;
                break;
            }
        }
        if(flag==1)
        {
            printf("N/A\n");
        }
        else
        {
            sort(a,a+M);
            for(int i=0;i<M;i++)
            {
               if(i==0)
               printf("%d",a[i]);
               else
                printf(" %d",a[i]);
            }
            printf("\n");
        }
    }
}