Ordina con comparatore
Un vettore (come un array)  possono essere ordinati usando la funzione sort(). Ma questa funzione ordina in ordine crescente per impostazione predefinita. Per ordinare un array in un ordine diverso, è necessario utilizzare il cosiddetto comparator  - una funzione che imposta l'ordinamento confrontando due oggetti .
 
Esempio
Un esempio di un comparatore che ordina gli elementi di un array in ordine crescente. bool cmp(int primo, int secondo) { ritorna prima < secondo; }
e ordinando il vettore A usando il comparatore creato: sort(A.begin(), A.end(), cmp); Pensa agli iteratori

In base alla condizione del problema, è chiaro che è necessario applicare l'ordinamento stable (stable), quindi, invece di sort, dovrebbe essere usato stable_sort.

puoi anche specificare un oggetto funzione come comparatore, che puoi creare prima di chiamare la funzione sort.
Ad esempio:
struct {
        bool operatore()(int a, int b) const
        {
            restituisci a < b;
        }
    }cmp;