#include <algorithm> #include <cctype> #include <cmath> #include <cstdio> #include <iostream> #include <map> #include <set> #include <stack> #include <string> #include <vector> using namespace std; struct S { int order; int num; string str; }; S s[101]; int compute(string str) { int sum = 0; for (int i = 0; i < str.size(); i++) { for (int j = i; j < str.size(); j++) { if (str[i] > str[j]) sum++; } } return sum; } bool cmp(S a, S b) { if (a.num == b.num) { return a.order < b.order; } else { return a.num < b.num; } } int main(void) { int n, m; while (cin >> n >> m) { string str; for (int i = 0; i < m; i++) { cin >> str; s[i].order = i; s[i].str = str; s[i].num = compute(str); } sort(s, s + m, cmp); for (int i = 0; i < m; i++) { cout << s[i].str << endl; } } } |
Double click to view unformatted code.