148. [CPE] DNA Sorting

I'm a slow walker, but I never walk backwards.

Task Description
[CPE] DNA Sorting
在一個字串中,「未排序」的程度是以各字元間彼此的大小關係來計算的。
例如在字串 DAABEC中,「未排序」的程度為 5,因為D比它右邊的4個字元大,E比它右邊的1個字元大。
而字串AACEDGG「未排序」的程度為 1
(幾乎是快排序好的,唯一的未排序發生在E和D之間),字串ZYXW「未排序」的程度為 6(剛好是完全排序的相反)。
現在你的任務是為許多的DNA字串來做排序。每個字串中僅含有A,C,G和T這4種字元。排序的原則是根據各字串「未排序」的程度,由小到大輸出。 在這裡每個字串的長度均相同。
請運用struct結構如下所附:

1
2
3
4
struct DNA{
    char string[n];
    int order;
 };

Input Format
輸入的第一列有一個整數代表以下有幾組測試資料。
每組測試資料的第一列含有2個正整數 n(0 < n <= 50)和 m(0 < m <= 100),
n 代表字串的長度,m 代表字串的數目。接下來的 m 列,每列有一個長度為 n 的字串。

Output Format
對每組測試資料按照「未排序」的程度,由小到大輸出各字串。
假如有不只2個字串「未排序」的程度相同,則按照它們在輸入中的順序輸出。

Sample Input

1
2
3
4
5
6
7
8
1
10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT

Sample Output

1
2
3
4
5
6
CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA

Submit

Login

Testdata Set

Download Testdata