In this post, we will solve Ice Cream Parlor HackerRank Solution. This problem (Ice Cream Parlor) is a part of HackerRank Problem Solving series.
Solution – Ice Cream Parlor – HackerRank Solution
C++
#include <stdio.h> #include <vector> #include <algorithm> #define NOT_FOUND -1 using namespace std; struct ice_cream { int cost; int idx; ice_cream() {} ice_cream(int cost, int idx):cost(cost), idx(idx) {} }; bool operator <(const ice_cream &a, const ice_cream &b) { return a.cost < b.cost || (a.cost == b.cost && a.idx < b.idx); } int search(int l, int r, int need, vector <ice_cream> &v) { while(l <= r) { int mid = (l + r) / 2; if (v[mid].cost == need) { return v[mid].idx; } else if (v[mid].cost < need) { l = mid + 1; } else { r = mid - 1; } } return NOT_FOUND; } int main(void) { int t; int m, n; int cost; vector <ice_cream> v; scanf(" %d", &t); for (int test = 0; test < t; test++) { scanf(" %d", &m); scanf(" %d", &n); v.clear(); for (int i = 0; i < n; i++) { scanf(" %d", &cost); v.push_back(ice_cream(cost, i + 1)); } sort(v.begin(), v.end()); for (int i = 0; i < (int)v.size(); i++) { int cost = v[i].cost; int need = m - cost; int idx = search(i + 1, (int)v.size() - 1, need, v); if (idx != NOT_FOUND) { printf("%d %d\n", min(v[i].idx, idx), max(v[i].idx, idx)); break; } } } return 0; }
Python
import math import os import random import re import sys from collections import Counter # Complete the whatFlavors function below. def whatFlavors(cost, money): d=Counter(cost) for sunny in cost: johnny=money-sunny if sunny!=johnny: if d[johnny]>0: j=cost.index(johnny) print(cost.index(sunny)+1,j+1) return else: if d[johnny]>1: j=cost[cost.index(johnny)+1:].index(johnny) print(cost.index(sunny)+1,j+2+cost.index(sunny)) return if __name__ == '__main__': t = int(input()) for t_itr in range(t): money = int(input()) n = int(input()) cost = list(map(int, input().rstrip().split())) whatFlavors(cost, money)
Java
import java.io.*; import java.util.*; public class Solution { public static void main(String[] args) { /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */ Scanner in=new Scanner(System.in); int T=in.nextInt(); int M,N,x,y,c; for(int i=0;i<T;i++) {c=0; M=in.nextInt(); N=in.nextInt(); int ar[]=new int[N]; for(int j=0;j<N;j++) {ar[j]=in.nextInt();} for(int a=0;a<N;a++) {if(c==1) {break;} for(int b=0;b<N;b++) { if(b!=a) { if((ar[a]+ar[b])==M) {x=a+1;y=b+1; if(x>y) {System.out.println(y+" "+x);} else {System.out.println(x+" "+y);} c=1; } } } } } } }
Note: This problem (Ice Cream Parlor) is generated by HackerRank but the solution is provided by CodingBroz. This tutorial is only for Educational and Learning purpose.