Skip to content
Programmingoneonone
Programmingoneonone
  • Engineering Subjects
    • Internet of Things (IoT)
    • Digital Communication
    • Human Values
  • Programming Tutorials
    • C Programming
    • Data structures and Algorithms
    • 100+ Java Programs
    • 100+ C Programs
    • 100+ C++ Programs
  • Solutions
    • HackerRank
      • Algorithms Solutions
      • C solutions
      • C++ solutions
      • Java solutions
      • Python solutions
    • Leetcode Solutions
    • HackerEarth Solutions
  • Work with US
Programmingoneonone
Programmingoneonone

HackerRank Luck Balance problem solution

YASH PAL, 31 July 20246 February 2026

In this HackerRank Luck Balance interview preparation kit problem solution, If Lena loses no more than k important contests, what is the maximum amount of luck she can have after competing in all the preliminary contests? This value may be negative.

Function Description

Complete the luckBalance function in the editor below.

luckBalance has the following parameter(s):

  • int contests[n][2]: a 2D array of integers where each contests[i] contains two integers that represent the luck balance and importance of the ith contest.
  • int k: the number of important contests Lena can lose.

Returns

  • int: the maximum luck balance achievable
HackerRank Luck Balance Interview preparation kit solution

HackerRank Luck Balance problem solution in Python.

N, K = map(int, input().strip().split())

luck = 0
important = []

for i in range(N):
    L, T = list(map(int, input().strip().split()))
    if T == 0:
        luck += L
    else:
        important.append(L)
        
for i in sorted(important, reverse=True):
    if K > 0:
        luck += i
        K -= 1
    else:
        luck -= i

print(luck)

Luck Balance problem solution in Java Programming.

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;

public class Solution {

    // Complete the luckBalance function below.
   static int luckBalance(int k, int[][] c) {
        PriorityQueue<Integer> imp = new PriorityQueue<>(Collections.reverseOrder());
        int luck = 0;
        for(int row = 0; row < c.length; row++){
            if(c[row][1] == 0) luck += c[row][0]; else imp.offer(c[row][0]);
        }
        boolean decreaseLuck = false;
        while(!imp.isEmpty()){
            if(k == 0) decreaseLuck = true;
            if(decreaseLuck == true) luck -= imp.poll(); else luck += imp.poll();
            k--;
        }return luck;   
    }

    private static final Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) throws IOException {
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        String[] nk = scanner.nextLine().split(" ");

        int n = Integer.parseInt(nk[0]);

        int k = Integer.parseInt(nk[1]);

        int[][] contests = new int[n][2];

        for (int i = 0; i < n; i++) {
            String[] contestsRowItems = scanner.nextLine().split(" ");
            scanner.skip("(rn|[nru2028u2029u0085])?");

            for (int j = 0; j < 2; j++) {
                int contestsItem = Integer.parseInt(contestsRowItems[j]);
                contests[i][j] = contestsItem;
            }
        }

        int result = luckBalance(k, contests);

        bufferedWriter.write(String.valueOf(result));
        bufferedWriter.newLine();

        bufferedWriter.close();

        scanner.close();
    }
}

Problem solution in C++ programming.

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <utility>
#include <cstring>
#include <bitset>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <set>
using namespace std;

typedef double db;
typedef long long LL;
typedef pair< int, int > PII;
typedef pair< LL, LL > PLL;
typedef pair< db, db > PDD;

const db dInf = 1E90;
const LL lInf = ( LL ) 1E16;
const int Inf = 0x23333333;
const int N = 505;

#define it iterator
#define rbg rbegin()
#define ren rend()
#define fdi( i, x ) for ( typeof( x.rbg ) i=x.rbg; i!=x.ren; ++i )
#define foi( i, x ) for ( typeof( x.begin() ) i=x.begin(); i!=x.end(); ++i )
#define fd( i, y, x ) for ( int i=( y )-1, LIM=x; i>=LIM; --i )
#define fo( i, x, y ) for ( int i=x, LIM=y; i<LIM; ++i )
#define mkp( A, B ) make_pair( A, B )
#define pub( x ) push_back( x )
#define pob( x ) pop_back( x )
#define puf( x ) push_front( x )
#define pof( x ) pop_front( x )
#define fi first
#define se second

void Read( int &x )
{
	x = 0; char ch = '';
	while ( ch<'0' || ch>'9' ) ch = getchar();
	while ( ch>='0' && ch<='9' )
		x = x * 10 + ch - '0', ch = getchar();
}

void update( int &x, int v ) { if ( v > x ) x = v; }

int f[N];
int n, m;

int main()
{

	int v, imp;
	Read( n ), Read( m );
	fill( f + 1, f + m + 1, -Inf );
	fo ( i, 0, n )
	{
		Read( v ), Read( imp );
		fd ( j, m+1, 0 ) 
		{
			int temp = f[j]; f[j] = -Inf;
			update( f[ j+imp ], temp + v );
			update( f[j], temp - v );
		}
	}
	int ret = -Inf;
	fo ( j, 0, m+1 ) update( ret, f[j] );
	printf( "%dn", ret );

	return 0;
}

Problem solution in C programming.

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int comp(void *a,void *b)
    {
    return *(int *)b-*(int *)a;
}

int main() {

    /* Enter your code here. Read input from STDIN. Print output to STDOUT */  
    int n,k;
    scanf("%d %d",&n,&k);
    int i,temp,flag;
    int a[n],c=0;
    long long int sum=0;
    for(i=0;i<n;i++)
        {
        scanf("%d %d",&temp,&flag);
        if(flag==0)
            sum+=temp;
        else
            {
            a[c++]=temp;
        }
    }
    qsort(a,c,sizeof(temp),(void *)comp);
    for(i=0;i<c;i++)
    {
        if(i<k)
            sum+=a[i];
        else
            sum-=a[i];
    }
    printf("%lldn",sum);
    return 0;
}

Problem solution in JavaScript programming.

function processData(input) {
    //Enter your code here
    var lines = input.split("n");
    var NK = lines[0].split(" ").map(Number);
    var n = NK[0];
    var k = NK[1];
    var luck=0;
    var impo=[];
    
    for (var i=0; i < n ; i++) {
        var LI = lines[i+1].split(" ").map(Number);        
        if (LI[1]==0) {
            luck += LI[0];
            //console.log("unimport => lose " + LI[0]);
        } else {
            impo.push(LI[0]);
            //console.log("important => wait " + LI[0]);
        }
    }
    impo.sort(function(a,b) { return b - a;});
    //console.log(impo);
    for (var i=0 ; i < impo.length ; i++) {
        if (i < k) {
            luck += impo[i];            
        } else {
            luck -= impo[i];
        }
    }
    
    console.log(luck);
} 

process.stdin.resume();
process.stdin.setEncoding("ascii");
_input = "";
process.stdin.on("data", function (input) {
    _input += input;
});

process.stdin.on("end", function () {
   processData(_input);
});

coding problems solutions Hackerrank Problems Solutions interview prepration kit HackerRank

Post navigation

Previous post
Next post

Programmingoneonone

We at Programmingoneonone, also known as Programming101 is a learning hub of programming and other related stuff. We provide free learning tutorials/articles related to programming and other technical stuff to people who are eager to learn about it.

Pages

  • About US
  • Contact US
  • Privacy Policy

Practice

  • Java
  • C++
  • C

Follow US

  • YouTube
  • LinkedIn
  • Facebook
  • Pinterest
  • Instagram
©2026 Programmingoneonone | WordPress Theme by SuperbThemes