Răspuns :
#include <iostream>
using namespace std;
int sum(int n){
int sum = 0;
while(n){
sum+=n%10;
n/=10;
}
return sum;
}
bool compare(int a, int b){
int sa = sum(a), sb = sum(b);
if(sa < sb)
return true; // Sortat ok
if(sa > sb)
return false; // Sortat invers
// A rămas cazul în care au sumele egale, verificăm numărul efectiv
if(a <= b)
return true; // E ok
return false; // Greșit
}
int main(){
int n, i, j, aux;
cin>>n;
short int v[n];
for(i = 0; i < n; i++){
cin>>v[i];
}
int changes;
do{
changes = 0;
for(i = 0; i < n; i++){
for(j = i+1; j < n; j++){
if(compare(v[i], v[j]) == false){
aux = v[i];
v[i] = v[j];
v[j] = aux;
changes++;
}
}
}
}while(changes == 0);
for (int i = 0; i < n; i++) {
cout<<v[i]<<" ";
}
}
https://pastebin.com/k0c0f9jx