#include <iostream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
struct st{
char c[50];
int coun=0;
};
void Merge(st s[100],int p,int q,int r) {
int n1=q-p+1,n2=r-q;
st l[q-p+2],l2[r-q+1];
for(int i=0;i<n1;i++){
l[i]=s[i+p];
}
for(int i=0;i<n2;i++){
l2[i]=s[i+q+1];
}
int t=0,j=0;
l[n1].coun=1000;
l2[n2].coun=1000;
for(int i=p;i<r+1;++i) {
if((l[t].coun)<=(l2[j].coun)){
s[i]=l[t];
t++;
}
else{
s[i]=l2[j];
j++;
}
}
}
void MergeSort(st s[100],int p,int r) {
if(p<r) {
int q=(p+r)/2;
MergeSort(s,p,q);
MergeSort(s,q+1,r);
Merge(s,p,q,r);
}
}
int main() {
int m,n;
scanf("%d %d",&n,&m);
st s[100];
for(int i=0;i<m;i++){
scanf("%s",s[i].c);
s[i].coun=0;
for(int j=0;j<n-1;j++) {
for(int k=j+1;k<n;k++)
if(s[i].c[k]<s[i].c[j]) s[i].coun++;
}
}
MergeSort(s,0,m-1);
for(int i=0;i<m;i++)
cout<<s[i].c<<endl;
}
北大百练oj题解:1007
最新推荐文章于 2022-12-11 18:59:35 发布