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
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;
}
}