View Code of Problem 126

#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.


Back to problem 126