问题描述
逆序对的定义如下:
有一个数列{an},对于任意的ai’<’aj若i’>’j,则称(ai,aj)为一个逆序对。
我们定义一个序列的无序度为其中的逆序对个数。
我们知道对于DNA,仅仅含有ACGT四种碱基,现在我们定义A’<’C’<’G’<’T,那么对于一串DNA序列,我们就可一得到它的无序度。
因此,我们给出n个长度均为L的DNA序列,请你将他们按无序度递增的顺序输出。对于无序度相同的两个DNA序列,输入顺序在前的序列输出也在前。
输入
第一行两个整数L和n。
接下来有n行,每一行有一个长度为L的字符串。
输出
n行,每行一个长度为L的字符串。
样例输入
10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT
样例输出
CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA
数据范围
对于30%的数据n<=100。
对于另外30%的数据,序列的无序度各不相同。
对于100%的数据,n<=10000,L<=50。
算法讨论
感觉这题才应该放在第一题啊←_←,长度只有50,读入的时候就逐个比较求出无序度,最后一个快排就好了,注意无序度相同时要按输入顺序输出,也就是双关键字排序。
const
maxn=