Taum is planning to celebrate the birthday of his friend, Diksha. There are two types of gifts that Diksha wants from Taum: one is black and the other is white. To make her happy, Taum has to buy b black gifts and white gifts.
- The cost of each black gift is bc units.
- The cost of every white gift is wc units.
- The cost to convert a black gift into white gift or vice versa is units.
Determine the minimum cost of Diksha’s gifts.
Example
b=3
w=5
bc=3
wc=4
z=1
He can buy a black gift for 3 and convert it to a white gift for 1, making the total cost of each white gift 4. That matches the cost of a white gift, so he can do that or just buy black gifts and white gifts. Either way, the overall cost is 3*3+5*4=29.
Function Description
Complete the function taumBday in the editor below. It should return the minimal cost of obtaining the desired gifts.
taumBday has the following parameter(s):
- int b: the number of black gifts
- int w: the number of white gifts
- int bc: the cost of a black gift
- int wc: the cost of a white gift
- int z: the cost to convert one color gift to the other color
Returns
- int: the minimum cost to purchase the gifts
Input Format
The first line will contain an integer t, the number of test cases.
The next t pairs of lines are as follows:
– The first line contains the values of integers b and w.
– The next line contains the values of integers bc,wc , and z.
Constraints
1<=t<=10
0<=b,w,b,wc,z<=10^9
Output Format
lines, each containing an integer: the minimum amount of units Taum needs to spend on gifts.
Sample Input
STDIN Function ----- -------- 5 t = 5 10 10 b = 10, w = 10 1 1 1 bc = 1, wc = 1, z = 1 5 9 b = 5, w = 5 2 3 4 bc = 2, wc = 3, z = 4 3 6 b = 3, w = 6 9 1 1 bc = 9, wc = 1, z = 1 7 7 b = 7, w = 7 4 2 1 bc = 4, wc = 2, z = 1 3 3 b = 3, w = 3 1 9 2 bc = 1, wc = 9, z = 2
Sample Output
20 37 12 35 12
Organizing Containers of Balls Solution in C++
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <string>
#include <bitset>
#include <cstdio>
#include <limits>
#include <vector>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <fstream>
#include <numeric>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
int main(){
int q;
cin >> q;
for(int a0 = 0; a0 < q; a0++){
int n;
cin >> n;
vector< vector<int> > M(n,vector<int>(n));
long long totalIn[101]={0},totalOf[100]={0};
for(int M_i = 0;M_i < n;M_i++){
for(int M_j = 0;M_j < n;M_j++){
cin >> M[M_i][M_j];
totalIn[M_i]+=M[M_i][M_j];
totalOf[M_j]+=M[M_i][M_j];
}
}
sort(totalIn,totalIn+100);
sort(totalOf,totalOf+100);
int i;
for(i=0;i<100;i++)
{
if(totalIn[i]!=totalOf[i])
break;
}
if(i==100)
cout<<"Possible"<<endl;
else
cout<<"Impossible"<<endl;
// your code goes here
}
return 0;
}
Organizing Containers of Balls Solution in 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 q = in.nextInt();
for(int a0 = 0; a0 < q; a0++){
int n = in.nextInt();
int[][] M = new int[n][n];
for(int M_i=0; M_i < n; M_i++){
for(int M_j=0; M_j < n; M_j++){
M[M_i][M_j] = in.nextInt();
}
}
int[] rt = new int[n];
int[] ct = new int[n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
rt[i] += M[i][j];
ct[j] += M[i][j];
}
}
Arrays.sort(rt);
Arrays.sort(ct);
String ans = "Possible";
for (int i = 0; i < n; i++) {
if (rt[i] != ct[i])
ans = "Impossible";
}
System.out.println(ans);
}
}
}
Organizing Containers of Balls Solution in Python
#!/bin/python
import sys
q = int(raw_input().strip())
for a0 in xrange(q):
n = int(raw_input().strip())
M = []
for M_i in xrange(n):
M_temp = map(int,raw_input().strip().split(' '))
M.append(M_temp)
ballcounts = {}
for j in xrange(n):
s = 0
for i in xrange(n):
s += M[i][j]
if s in ballcounts:
ballcounts[s] += 1
else:
ballcounts[s] = 1
conts = {}
for i in xrange(n):
s = 0
for j in xrange(n):
s += M[i][j]
if s in conts:
conts[s] += 1
else:
conts[s] = 1
poss = True
#for x in ballcounts:
# if ballcounts[x] % 2 == 1:
# poss = False
for x in ballcounts:
if not (x in conts):
poss = False
break
if conts[x] != ballcounts[x]:
poss = False
break
for x in conts:
if not (x in ballcounts):
poss = False
break
if conts[x] != ballcounts[x]:
poss = False
break
if (poss):
print "Possible"
else:
print "Impossible"
Organizing Containers of Balls Solution in C#
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
namespace CF317
{
internal class Program
{
private static void Main(string[] args)
{
var sr = new InputReader(Console.In);
//var sr = new InputReader(new StreamReader("input.txt"));
var task = new Task();
using (var sw = Console.Out)
//using (var sw = new StreamWriter("output.txt"))
{
task.Solve(sr, sw);
//Console.ReadKey();
}
}
}
internal class Task
{
public void Solve(InputReader sr, TextWriter sw)
{
var tests = sr.NextInt32();
for (var t = 0; t < tests; t++) {
var n = sr.NextInt32();
var matrix = new long[n, n];
for (var i = 0; i < n; i++) {
var input = sr.ReadArray(Int64.Parse);
for (var j = 0; j < n; j++) {
matrix[i, j] = input[j];
}
}
var containersCap = new Dictionary<long, int>();
for (var i = 0; i < n; i++) {
var currCap = 0L;
for (var j = 0; j < n; j++) {
currCap += matrix[i, j];
}
if (!containersCap.ContainsKey(currCap)) {
containersCap.Add(currCap, 0);
}
containersCap[currCap]++;
}
var typesCap = new Dictionary<long, int>();
for (var j = 0; j < n; j++) {
var curr = 0L;
for (var i = 0; i < n; i++) {
curr += matrix[i, j];
}
if (!typesCap.ContainsKey(curr)) {
typesCap.Add(curr, 0);
}
typesCap[curr]++;
}
var answ = "Possible";
foreach (var item in typesCap) {
if (!containersCap.ContainsKey(item.Key)) {
answ = "Impossible";
break;
}
containersCap[item.Key] -= item.Value;
if (containersCap[item.Key] != 0) {
answ = "Impossible";
break;
}
containersCap.Remove(item.Key);
}
if (containersCap.Count != 0) {
answ = "Impossible";
}
sw.WriteLine(answ);
}
}
}
}
internal class InputReader : IDisposable
{
private bool isDispose;
private readonly TextReader sr;
public InputReader(TextReader stream)
{
sr = stream;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
public string NextString()
{
var result = sr.ReadLine();
return result;
}
public int NextInt32()
{
return Int32.Parse(NextString());
}
public long NextInt64()
{
return Int64.Parse(NextString());
}
public string[] NextSplitStrings()
{
return NextString()
.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
}
public T[] ReadArray<T>(Func<string, CultureInfo, T> func)
{
return NextSplitStrings()
.Select(s => func(s, CultureInfo.InvariantCulture))
.ToArray();
}
public T[] ReadArrayFromString<T>(Func<string, CultureInfo, T> func, string str)
{
return
str.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s => func(s, CultureInfo.InvariantCulture))
.ToArray();
}
protected void Dispose(bool dispose)
{
if (!isDispose)
{
if (dispose)
sr.Close();
isDispose = true;
}
}
~InputReader()
{
Dispose(false);
}
}
Attempt Organizing Containers of Balls HackerRank Challenge
Link – https://www.hackerrank.com/challenges/taum-and-bday/
Next HackerRank Challenge Solution
Link – https://exploringbits.com/encryption-hackerrank-solution/
Aayush Kumar Gupta is the founder and creator of ExploringBits, a website dedicated to providing useful content for people passionate about Engineering and Technology. Aayush has completed his Bachelor of Technology (Computer Science & Engineering) from 2018-2022. From July 2022, Aayush has been working as a full-time Devops Engineer.