Classificar com comparador
Um vetor (como uma matriz)  podem ser classificados usando a função sort(). Mas esta função classifica em ordem crescente por padrão. Para classificar uma matriz em uma ordem diferente, você precisa usar o chamado comparator  - uma função que define a ordem de classificação comparando dois objetos .
 
Exemplo
Um exemplo de comparador que classifica os elementos de uma matriz em ordem crescente. bool cmp(int primeiro, int segundo) { retorne primeiro < segundo; }
e classificando o vetor A usando o comparador criado: sort(A.begin(), A.end(), cmp); Pense nos iteradores

De acordo com a condição do problema, fica claro que é necessário aplicar a ordenação stable (stable), portanto, ao invés de sort, deve-se usar stable_sort.

você também pode especificar um objeto de função como um comparador, que pode ser criado antes de chamar a função de classificação.
Por exemplo:
estrutura {
        bool operador()(int a, int b) const
        {
            devolver a < b;
        }
    }cmp;