## Interview Question

- 0of 0 votes

AnswerDistributing Medals It's the medal distribution ceremony. 10^6 police officers, numbered from 1 to 10^6, are standing in a line. There are N (1<=N<=1000) iterations of medal distribution. In iteration i (0 < = i < N), count[i] ( 1 < = count[i] < = 100) medals are given to all officers from from[i] to to[i] ( 1 < = from[i] < = to[i] < = 10^6 )

- BABUBTECH786 September 13, 2014 in United States

If we sum up the number of medals received starting from the first officer, who would be the first officer for which the cumulative sum exceeds a given medal count THRESHOLD ( 1 < = THRESHOLD < = 10^9 )?

Input/Output Specifications Input format:

You are given 5 inputs:

input1 = N, the number of iterations

input2 = count, the array of medal counts in each iteration

input3 = from, the array of starting indices in each iteration

input4 = to, the array of ending indices in each iteration

input5 = THRESHOLD, the medal count threshold

Output format:

An integer, representing the number of the first officer such that the cumulative sum of medals starting from the first officer upto this officer exceeds THRESHOLD. The output should be -1 if such an officer does not exist| Report Duplicate | Flag | PURGE

Java

**Country:**United States

**CareerCup**is the world's biggest and best source for software engineering interview preparation. See all our resources.

public class CandidateCode

- gowtham November 12, 2014{

public static void main(String[] args) {

int answer = DistributingMedals(1,new int[]{1},new int[]{1},new int[]{10},2);

System.out.println(answer);

}

/**

*

* @param input1 = N, the number of iterations

* @param input2 = count, the array of medal counts in each iteration

* @param input3 = from, the array of starting indices in each iteration

* @param input4 = to, the array of ending indices in each iteration

* @param input5 = THRESHOLD, the medal count threshold

* @return

*/

public static int DistributingMedals(int input1,int[] input2,int[] input3,int[] input4,int input5)

{

int officerIndex = -1;

if (InputsValid(input1, input2, input3, input4, input5))

{

int medalsCount = 0;

for (int i = 0; i < input1; i++)

{

for (int o = input3[i]; o <= input4[i]; o++)

{

medalsCount += input2[i];

if (medalsCount > input5)

{

officerIndex = o;

break;

}

}

if (medalsCount > input5)

break;

}

}

return officerIndex;

}

private static boolean InputsValid(int input1, int[] input2, int[] input3, int[] input4, int input5)

{

if (((1 <= input1) && (input1 <= 1000))

&& ((input2.length == input1) && (input3.length == input1) && (input4.length == input1))

&& ((1 <= input5) && (input5 <= 1000000000)))

{

int ok = 0;

for (int i = 0; i < input1; i++)

{

if ((1 <= input3[i] && input3[i] <= input4[i] && input4[i] <= 1000000)

&& (1 <= input2[i] && input2[i] <= 100))

ok++;

}

if (ok == input1)

return true;

}

return false;

}

}