import java.util.*;
public class Main {
private static int digitSum(int n) {
int sum = 0;
while (n > 0) {
sum += n % 10;
n /= 10;
}
return sum;
}
public static void main
(String[] args
) { int[] nums = {51, 71, 17, 42};
Map
<Integer, PriorityQueue
<Integer
>> map
= new HashMap
<>();
// Step 1: Group by digit sum
for (int num : nums) {
int sum = digitSum(num);
map.
putIfAbsent(sum,
new PriorityQueue
<>(Collections.
reverseOrder())); map.get(sum).add(num);
}
int maxSum = -1;
List<int[]> maxPairs = new ArrayList<>();
// Step 2: For each group, check top 2 numbers
for (PriorityQueue<Integer> pq : map.values()) {
if (pq.size() >= 2) {
int first = pq.poll();
int second = pq.poll();
int sum = first + second;
if (sum > maxSum) {
maxSum = sum;
maxPairs.clear();
maxPairs.add(new int[]{first, second});
} else if (sum == maxSum) {
maxPairs.add(new int[]{first, second});
}
}
}
// Output result
System.
out.
println("Maximum Sum: " + maxSum
); for (int[] pair : maxPairs) {
System.
out.
println(pair
[0] + " " + pair
[1]); }
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHJpdmF0ZSBzdGF0aWMgaW50IGRpZ2l0U3VtKGludCBuKSB7CiAgICAgICAgaW50IHN1bSA9IDA7CiAgICAgICAgd2hpbGUgKG4gPiAwKSB7CiAgICAgICAgICAgIHN1bSArPSBuICUgMTA7CiAgICAgICAgICAgIG4gLz0gMTA7CiAgICAgICAgfQogICAgICAgIHJldHVybiBzdW07CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIGludFtdIG51bXMgPSB7NTEsIDcxLCAxNywgNDJ9OwoKICAgICAgICBNYXA8SW50ZWdlciwgUHJpb3JpdHlRdWV1ZTxJbnRlZ2VyPj4gbWFwID0gbmV3IEhhc2hNYXA8PigpOwoKICAgICAgICAvLyBTdGVwIDE6IEdyb3VwIGJ5IGRpZ2l0IHN1bQogICAgICAgIGZvciAoaW50IG51bSA6IG51bXMpIHsKICAgICAgICAgICAgaW50IHN1bSA9IGRpZ2l0U3VtKG51bSk7CiAgICAgICAgICAgIG1hcC5wdXRJZkFic2VudChzdW0sIG5ldyBQcmlvcml0eVF1ZXVlPD4oQ29sbGVjdGlvbnMucmV2ZXJzZU9yZGVyKCkpKTsKICAgICAgICAgICAgbWFwLmdldChzdW0pLmFkZChudW0pOwogICAgICAgIH0KCiAgICAgICAgaW50IG1heFN1bSA9IC0xOwogICAgICAgIExpc3Q8aW50W10+IG1heFBhaXJzID0gbmV3IEFycmF5TGlzdDw+KCk7CgogICAgICAgIC8vIFN0ZXAgMjogRm9yIGVhY2ggZ3JvdXAsIGNoZWNrIHRvcCAyIG51bWJlcnMKICAgICAgICBmb3IgKFByaW9yaXR5UXVldWU8SW50ZWdlcj4gcHEgOiBtYXAudmFsdWVzKCkpIHsKICAgICAgICAgICAgaWYgKHBxLnNpemUoKSA+PSAyKSB7CiAgICAgICAgICAgICAgICBpbnQgZmlyc3QgPSBwcS5wb2xsKCk7CiAgICAgICAgICAgICAgICBpbnQgc2Vjb25kID0gcHEucG9sbCgpOwogICAgICAgICAgICAgICAgaW50IHN1bSA9IGZpcnN0ICsgc2Vjb25kOwoKICAgICAgICAgICAgICAgIGlmIChzdW0gPiBtYXhTdW0pIHsKICAgICAgICAgICAgICAgICAgICBtYXhTdW0gPSBzdW07CiAgICAgICAgICAgICAgICAgICAgbWF4UGFpcnMuY2xlYXIoKTsKICAgICAgICAgICAgICAgICAgICBtYXhQYWlycy5hZGQobmV3IGludFtde2ZpcnN0LCBzZWNvbmR9KTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3VtID09IG1heFN1bSkgewogICAgICAgICAgICAgICAgICAgIG1heFBhaXJzLmFkZChuZXcgaW50W117Zmlyc3QsIHNlY29uZH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBPdXRwdXQgcmVzdWx0CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJNYXhpbXVtIFN1bTogIiArIG1heFN1bSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJQYWlyczoiKTsKICAgICAgICBmb3IgKGludFtdIHBhaXIgOiBtYXhQYWlycykgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFpclswXSArICIgIiArIHBhaXJbMV0pOwogICAgICAgIH0KICAgIH0KfQo=