View Code of Problem 126

#include<iostream>
#include<cstdio>
#include<string>
#include<cmath>
#include<algorithm>

using namespace std;

int fun(string s)
{
    int sum=0;
    for(int i=0;i<s.size();i++)
    {
        for(int j=i+1;j<s.size();j++)
        {
            if(s[i]>s[j])
                sum++;
        }
    }
    return sum;
}

bool cmp(pair<string,int>x,pair<string,int>y)
{
    if(fun(x.first)<fun(y.first))
        return true;
    if(fun(x.first)==fun(y.first)&&x.second>y.second)
        return true;
    return false;
}
int main()
{
    int n,m;
    cin>>n>>m;
    pair<string,int>a[m];
    for(int i=0;i<m;i++)
    {
        string temp;
        cin>>temp;
        a[i]=make_pair(temp,i);
    }
    sort(a,a+m,cmp);
    for(int i=0;i<m;i++)
    {
        cout<<a[i].first<<endl;
    }
}

Double click to view unformatted code.


Back to problem 126