#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int sum_digits(int a ) {
int sum=0, count=0;
while(a!=0)
{
count++;
sum += a%10;
a /= 10;
}
return sum;
}
struct Comparator {
bool operator()(int a, int b) {
int sum_digits_a = sum_digits(a);
int sum_digits_b = sum_digits(b);
if(sum_digits_a == sum_digits_b)
return a < b;
return sum_digits_a < sum_digits_b;
}
};
int main() {
vector<int> vec{13, 20, 7, 4};
sort(vec.begin(), vec.end(),Comparator() );
for(auto v : vec)
cout << v << " ";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IHN1bV9kaWdpdHMoaW50IGEgKSB7CglpbnQgc3VtPTAsIGNvdW50PTA7Cgl3aGlsZShhIT0wKQoJewoJICAgIGNvdW50Kys7CgkgICAgc3VtICs9IGElMTA7CgkgICAgYSAvPSAxMDsKCX0KCXJldHVybiBzdW07Cn0KCnN0cnVjdCBDb21wYXJhdG9yIHsKCWJvb2wgb3BlcmF0b3IoKShpbnQgYSwgaW50IGIpIHsKCQlpbnQgc3VtX2RpZ2l0c19hID0gc3VtX2RpZ2l0cyhhKTsKCQlpbnQgc3VtX2RpZ2l0c19iID0gc3VtX2RpZ2l0cyhiKTsKCQkKCQlpZihzdW1fZGlnaXRzX2EgPT0gc3VtX2RpZ2l0c19iKQoJCQlyZXR1cm4gYSA8IGI7CgkJcmV0dXJuIHN1bV9kaWdpdHNfYSA8IHN1bV9kaWdpdHNfYjsKCX0KfTsKCmludCBtYWluKCkgewoJdmVjdG9yPGludD4gdmVjezEzLCAyMCwgNywgNH07CgkKCXNvcnQodmVjLmJlZ2luKCksIHZlYy5lbmQoKSxDb21wYXJhdG9yKCkgKTsKCQoJZm9yKGF1dG8gdiA6IHZlYykKCQljb3V0IDw8IHYgPDwgIiAiOwoJcmV0dXJuIDA7Cn0K