# Electronics Shop | HackerRank Solution

Hello coders, today we are going to solve Electronics Shop HackerRank Solution which is a Part of HackerRank Algorithm Series.

A person wants to determine the most expensive computer keyboard and USB drive that can be purchased with a give budget. Given price lists for keyboards and USB drives and a budget, find the cost to buy them. If it is not possible to buy both items, return -1.

Example

b = 60
keyboards = [40, 50, 60]
drivers = [5, 8, 12]
The person can buy a 40 keyboard + 12 USB drive = 52, or a 50 keyboard + 8 USB drive = 58. Choose the latter as the more expensive option and return 58.

Function Description

Complete the getMoneySpent function in the editor below.

getMoneySpent has the following parameter(s):

• int keyboards[n]: the keyboard prices
• int drives[m]: the drive prices
• int b: the budget

Returns

• int: the maximum that can be spent, or -1 if it is not possible to buy both items

## Input Format

The first line contains three space-separated integers bn, and m, the budget, the number of keyboard models and the number of USB drive models.
The second line contains n space-separated integers keyboard[i], the prices of each keyboard model.
The third line contains m space-separated integers drives, the prices of the USB drives.

## Constraints

• 1 <= n, m < 1000
• 1 <= b <= 106
• The price of each item is in the inclusive range [1, 106].

Sample Input 0

``````10 2 3
3 1
5 2 8``````

Sample Output 0

``9``

Explanation 0

Buy the 2nd keyboard and the 3rd USB drive for a total cost of 8 + 1 = 9.

Sample Input 1

``````5 1 1
4
5``````

Sample Output 1

``-1``

Explanation 1

There is no way to buy one keyboard and one USB drive because 4 + 5 > 5, so return -1.

## Solution – Electronics Shop

### C++

```#include <bits/stdc++.h>

using namespace std;

int ans=-1, a, b, i, n, m, s, j;

int main()
{

scanf("%d%d%d", &s, &n, &m);
for(i=1; i<=n; ++i) scanf("%d", &a[i]);
for(i=1; i<=m; ++i) scanf("%d", &b[i]);

for(i=1; i<=n; ++i)
for(j=1; j<=m; ++j)
if(a[i]+b[j]<=s) ans = max(a[i]+b[j], ans);

printf("%d\n", ans);

return 0;
}
```

### Python

```import sys

s,n,m = input().strip().split(' ')
s,n,m = [int(s),int(n),int(m)]
a = [int(keyboards_temp) for keyboards_temp in input().strip().split(' ')]
b = [int(pendrives_temp) for pendrives_temp in input().strip().split(' ')]
ans = -1
for x in a:
for y in b:
if x + y <= s:
ans = max(ans, x + y)
print (ans)
```

### Java

```import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int s = in.nextInt();
int n = in.nextInt();
int m = in.nextInt();
int[] keyboards = new int[n];
for(int keyboards_i=0; keyboards_i < n; keyboards_i++){
keyboards[keyboards_i] = in.nextInt();
}
int[] pendrives = new int[m];
for(int pendrives_i=0; pendrives_i < m; pendrives_i++){
pendrives[pendrives_i] = in.nextInt();
}
int max=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(keyboards[i]+pendrives[j]<=s){
if(max<keyboards[i]+pendrives[j]){
max=keyboards[i]+pendrives[j];
}
}
}
}
System.out.println(max==0?-1:max);

}
}```

Disclaimer: The above Problem (Electronics Shop) is generated by Hacker Rank but the Solution is Provided by CodingBroz. This tutorial is only for Educational and Learning Purpose.