fork(1) download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. int sum_digits(int a ) {
  7. int sum=0, count=0;
  8. while(a!=0)
  9. {
  10. count++;
  11. sum += a%10;
  12. a /= 10;
  13. }
  14. return sum;
  15. }
  16.  
  17. struct Comparator {
  18. bool operator()(int a, int b) {
  19. int sum_digits_a = sum_digits(a);
  20. int sum_digits_b = sum_digits(b);
  21.  
  22. if(sum_digits_a == sum_digits_b)
  23. return a < b;
  24. return sum_digits_a < sum_digits_b;
  25. }
  26. };
  27.  
  28. int main() {
  29. vector<int> vec{13, 20, 7, 4};
  30.  
  31. sort(vec.begin(), vec.end(),Comparator() );
  32.  
  33. for(auto v : vec)
  34. cout << v << " ";
  35. return 0;
  36. }
  37.  
Success #stdin #stdout 0s 3416KB
stdin
Standard input is empty
stdout
20 4 13 7