fork download
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3.  
  4. #define fo(i,start,end) for(int i=start;i<end;i++)
  5. using namespace std;
  6.  
  7. int FindDigitSum(int num){
  8. int sum = 0;
  9. while(num > 0){
  10. sum += (num%10);
  11. num /= 10;
  12. }
  13. return sum;
  14. }
  15.  
  16. int main() {
  17. vector<int>arr = {12,33,6,51,85};
  18. int n = arr.size();
  19. // vector<int>DigitSum;
  20. // DigitSum.reserve(n);
  21. unordered_map<int,int>mp;
  22. int MaxSumSeen = -1e9;
  23. for(int i=0;i<n;i++){
  24. int DigitSum = FindDigitSum(arr[i]);
  25. if(mp.find(DigitSum) == mp.end()){
  26. mp[DigitSum] = arr[i];
  27. }
  28. else{
  29. // we need bigger values , dont replace from the map just find the max sum
  30. int sum = arr[i] + mp[DigitSum];
  31. MaxSumSeen = max(MaxSumSeen,sum);
  32. if(arr[i] > mp[DigitSum]){
  33. mp[DigitSum] = arr[i];
  34. }
  35. }
  36. }
  37. cout<<"Maximum Sum is :"<<MaxSumSeen<<endl;
  38. return 0;
  39. }
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
Maximum Sum is :84