# Ice Cream Parlor

**Problem Statement**

Each time Sunny and Johnny take a trip to the Ice Cream Parlor, they pool their money to buy ice cream. On any given day, the parlor offers a line of flavors. Each flavor has a cost associated with it.

Given the value of and the of each flavor for trips to the Ice Cream Parlor, help Sunny and Johnny choose two distinct flavors such that they spend their entire pool of money during each visit. ID numbers are the 1- based index number associated with a . For each trip to the parlor, print the ID numbers for the two types of ice cream that Sunny and Johnny purchase as two space-separated integers on a new line. You must print the smaller ID first and the larger ID second.

For example, there are flavors having . Together they have to spend. They would purchase flavor ID’s and for a cost of . Use based indexing for your response.

**Note:**

Two ice creams having unique IDs and may have the same cost (i.e., ).

There will always be a unique solution.

**Input Format**

The first line contains an integer, , the number of trips to the ice cream parlor.

Each of the next sets of lines is as follows:

– The first line contains .

– The second line contains an integer, , the size of the array .

– The third line contains space-separated integers denoting the .

**Output Format**

Print two space-separated integers denoting the respective indices for the two distinct flavors they choose to purchase in ascending order. Recall that each ice cream flavor has a unique ID number in the inclusive range from to .

**Sample Input**

1 2 3 4 5 6 7 8 |
2 4 5 1 4 5 3 2 4 4 2 2 4 3 |

**Sample Output**

1 2 3 |
1 4 1 2 |

**Explanation**

Sunny and Johnny make the following two trips to the parlor:

– The first time, they pool together dollars. There are five flavors available that day and flavors and have a total cost of .

– The second time, they pool together dollars. There are four flavors available that day and flavors and have a total cost of .

**Solution**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
public class IceCreamParlor2 { // Complete the whatFlavors function below. static void whatFlavors(int[] cost, int money) { Map<Integer, Integer> value2index = new HashMap<Integer, Integer>(); for (int i=0; i<cost.length; i++) { int num = cost[i]; if (value2index.containsKey(money-num)) { int id1 = value2index.get(money-num); System.out.println(id1+" "+(i+1)); break; } else { value2index.put(num, i+1); } } } private static final Scanner scanner = new Scanner(System.in); public static void main(String[] args) { int t = scanner.nextInt(); scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); for (int tItr = 0; tItr < t; tItr++) { int money = scanner.nextInt(); scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); int n = scanner.nextInt(); scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); int[] cost = new int[n]; String[] costItems = scanner.nextLine().split(" "); scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); for (int i = 0; i < n; i++) { int costItem = Integer.parseInt(costItems[i]); cost[i] = costItem; } whatFlavors(cost, money); } scanner.close(); } } |