View Code of Problem 126

#include<iostream>
#include<algorithm>

using namespace std;
struct dna
{
	string s;
	int re,tag;
};
bool cmp(struct dna a, struct dna b){
	if(a.re!=b.re)	return a.re<b.re;
	else	return a.tag<b.tag;
}
int main()
{
	int n,m;
	while(cin>>n>>m){
		struct dna a[m];
		
		for(int i=0;i<m;++i){
			int sum=0;
			string tmp;
			cin>>tmp;
			a[i].s=tmp;
			for(int j=0;j<n;++j){
				for(int k=j;k<n;++k){
					if(tmp[j]>tmp[k])	sum++;
				}
			}
			a[i].re=sum;
			a[i].tag=i;
		}
		sort(a,a+m,cmp);
		for(int i=0;i<m;++i){
			cout<<a[i].s<<endl;
		}
	}

	return 0;
}

Double click to view unformatted code.


Back to problem 126