# Climbing the Leaderboard HackerRank Solution in C, C++, Java, Python

An arcade game player wants to climb to the top of the leaderboard and track their ranking. The game uses Dense Ranking, so its leaderboard works like this:

• The player with the highest score is ranked number  on the leaderboard.
• Players who have equal scores receive the same ranking number, and the next player(s) receive the immediately following ranking number.

Example

The ranked players will have ranks , and , respectively. If the player’s scores are  and , their rankings after each game are  and . Return .

Function Description

Complete the climbingLeaderboard function in the editor below.

• int ranked[n]: the leaderboard scores
• int player[m]: the player’s scores

Returns

• int[m]: the player’s rank after each new score

Input Format

The first line contains an integer , the number of players on the leaderboard.
The next line contains  space-separated integers , the leaderboard scores in decreasing order.
The next line contains an integer, , the number games the player plays.
The last line contains  space-separated integers , the game scores.

## Climbing the Leaderboard HackerRank Solution in C

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>
#define ll long long int
int main(){
ll n,m,i,j,an,am,ar;
scanf("%lld",&n);
for(i=0;i<n;i++)
{
scanf("%lld",an+i);
}
ar=1;
for(i=1;i<n;i++)
{
if(an[i]==an[i-1])
ar[i]=ar[i-1];
else
ar[i]=ar[i-1]+1;
}
ar[n]=ar[n-1]+1;
scanf("%lld",&m);
for(i=0;i<m;i++)
{
scanf("%lld",am+i);

}
i=n-1;j=0;
while(j<m)
{
while(an[i]<am[j] && i>0)
i--;
if(an[i]==am[j])
printf("%lld\n",ar[i]);
else if(an[i]>am[j])
printf("%lld\n",ar[i]+1);
else{
if(ar[i]==1)
printf("1\n");
else
printf("%lld\n",ar[i]-1);}
j++;
}
return 0;
}

## Climbing the Leaderboard HackerRank Solution in C++

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <sstream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <algorithm>
#include <functional>
#include <numeric>
#include <memory.h>
#include <time.h>

using namespace std;

typedef long long LL;

int n, m;

int main()
{
scanf("%d", &n);
set<int> s;
for (int i = 0; i < n; ++i)
{
int x;
scanf("%d", &x);
s.insert(x);
}
scanf("%d", &m);
vector<int> v(s.begin(), s.end());
for (int i = 0; i < m; ++i)
{
int x;
scanf("%d", &x);
int pos = upper_bound(v.begin(), v.end(), x) - v.begin();
printf("%d\n", (int)v.size() - pos + 1);
}
return 0;
}

## Climbing the Leaderboard HackerRank 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 n = in.nextInt();
List<Integer> scores = new ArrayList<Integer>();
for (int i = 0; i < n; i++){
int score = in.nextInt();
if (scores.size() == 0 || scores.get(scores.size() - 1) != score)
}
int m = in.nextInt();
for (int i = 0; i < m; i++){
int score = in.nextInt();
int min = 0;
int max = scores.size();
while (max > min){
int mid = (min + max) / 2;
if (scores.get(mid) <= score)
max = mid;
else
min = mid + 1;
}
System.out.println(min + 1);
}
}
}

## Climbing the Leaderboard HackerRank Solution in Python

#!/bin/python

import sys

def compute_sums(A, B):
i = 0
y = A[i]
s = 0

result = {}
for x in B:
while x > y:
result[y] = s
i += 1
if i >= len(A):
return result

y = A[i]
s += 1
for y in A[i:]:
result[y] = s
return result

n = int(raw_input().strip())
A = map(int,raw_input().strip().split(' '))
m = int(raw_input().strip())
B = map(int,raw_input().strip().split(' '))
A = list(set(A))
A.sort()

l = compute_sums(B,A)
for i in B:
print len(A)-l[i]+1


Attempt Climbing the Leaderboard HackerRank Challenge

Next HackerRank Challenge Solution