In this HackerRank Luck Balance interview preparation kit problem you need to complete the luckBalance function in the editor.
Problem solution in Python programming.
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)
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); });