Mini-Max Sum | HackerRank Solution

Hello coders, today we are going to solve Mini-Max Sum HackerRank Solution which is a Part of Problem Solving Series.

Mini-Max Sum

Task

Given five positive integers, find the minimum and maximum values that can be calculated by summing exactly four of the five integers. Then print the respective minimum and maximum values as a single line of two space-separated long integers.

Example

arr = [1, 3, 5, 7, 9]
The minimum sum is 1 + 3 +5 +7 = 16 and the maximum sum is 3 + 5 + 7 + 9 = 24. The function prints

16 24

Function Description

Complete the miniMaxSum function in the editor below.

miniMaxSum has the following parameter(s):

  • arr: an array of 5 integers

Print

Print two space-separated integers on one line: the minimum sum and the maximum sum of 4 of 5 elements.

Input Format

A single line of five space-separated integers.

Constraints

  • 1 <= arr[i] <= 109

Output Format

Print two space-separated long integers denoting the respective minimum and maximum values that can be calculated by summing exactly four of the five integers. (The output can be greater than a 32 bit integer.)

Sample Input

1 2 3 4 5

Sample Output

10 14

Explanation

The numbers are 1234, and 5. Calculate the following sums using four of the five integers:

  1. Sum everything except 1, the sum is 2 + 3 + 4 + 5 = 14.
  2. Sum everything except 2, the sum is 1 + 3 + 4 + 5 = 13.
  3. Sum everything except 3, the sum is 1 + 2 + 4 + 5 = 12.
  4. Sum everything except 4, the sum is 1 + 2 + 3 + 5 = 11.
  5. Sum everything except 5, the sum is 1 + 2 +3 + 4 = 10.

Hints: Beware of integer overflow! Use 64-bit Integer.

Solution – Mini-Max Sum

C++

#include <bits/stdc++.h>

using namespace std;

string ltrim(const string &);
string rtrim(const string &);
vector<string> split(const string &);

/*
 * Complete the 'miniMaxSum' function below.
 *
 * The function accepts INTEGER_ARRAY arr as parameter.
 */

void miniMaxSum(vector<int> arr) {
    long long min = LLONG_MAX , max = LLONG_MIN , sum ;
    for(int i = 0 ;i < arr.size() ; ++i)
    {
        sum = 0;
        for(int j = 0; j < arr.size() ; ++j)
        {
            if(i != j)
                sum += arr[j];
        }

        if(sum > max)
            max = sum;

        if (sum < min)
            min = sum;
    }

    cout << min << " " << max << endl;
}

int main()
{

    string arr_temp_temp;
    getline(cin, arr_temp_temp);

    vector<string> arr_temp = split(rtrim(arr_temp_temp));

    vector<int> arr(5);

    for (int i = 0; i < 5; i++) {
        int arr_item = stoi(arr_temp[i]);

        arr[i] = arr_item;
    }

    miniMaxSum(arr);

    return 0;
}

string ltrim(const string &str) {
    string s(str);

    s.erase(
        s.begin(),
        find_if(s.begin(), s.end(), not1(ptr_fun<int, int>(isspace)))
    );

    return s;
}

string rtrim(const string &str) {
    string s(str);

    s.erase(
        find_if(s.rbegin(), s.rend(), not1(ptr_fun<int, int>(isspace))).base(),
        s.end()
    );

    return s;
}

vector<string> split(const string &str) {
    vector<string> tokens;

    string::size_type start = 0;
    string::size_type end = 0;

    while ((end = str.find(" ", start)) != string::npos) {
        tokens.push_back(str.substr(start, end - start));

        start = end + 1;
    }

    tokens.push_back(str.substr(start));

    return tokens;
}

Python

#!/bin/python3

import math
import os
import random
import re
import sys

def miniMaxSum(arr):
    # Write your code here
    arr = sorted(arr)
    print(sum(arr[:-1]),sum(arr[1:]))

if __name__ == '__main__':

    arr = list(map(int, input().rstrip().split()))

    miniMaxSum(arr)

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

3 thoughts on “Mini-Max Sum | HackerRank Solution”

  1. Abdul Basheer m

    In C:
    void miniMaxSum(int arr_count, int* arr) {
    int i, min_ele,max_ele;
    long sum=0,max=0, less=0,more=0;

    min_ele = arr[0];
    max_ele = arr[0];

    for(i=0;i<arr_count;i++){
    sum = sum + arr[i];

    if(min_ele arr[i]){
    max_ele = arr[i];
    }
    }
    less = sum – min_ele;
    more = sum – max_ele;

    printf(“%ld %ld”,less,more);
    }

  2. In Java:
    public static void miniMaxSum(List arr) {
    // Write your code here
    long minSum = 0, maxSum = 0;
    //sort list in assending order
    Collections.sort(arr);
    //find min sum by adding 1st to 4th elemts
    for(int i = 0; i < 4; i++) minSum += arr.get(i);
    //find max sum by adding 2nd to 5th elements
    for(int i = 1; i < 5; i++) maxSum += arr.get(i);
    //display min and max sums
    System.out.print(minSum+" "+maxSum);
    }

Leave a Comment

Your email address will not be published. Required fields are marked *