分发奖章这是奖牌分发仪式。 10 ^ 6名警察,编号从1到10 ^ 6,排成一列。奖牌分发有N (1<=N<=1000)
次迭代。迭代i
(0 < = i < N), count[i] ( 1 < = count[i] < = 100)
奖牌将颁发给from[i] to to[i] ( 1 < = from[i] < = to[i] < = 10^6 )
如果我们总结从副驾驶开始收到的奖牌数量,谁将是累积金额超过给定奖牌count THRESHOLD ( 1 < = THRESHOLD < = 10^9 )
的副驾驶?
输入/输出规格输入格式:
您将获得5个输入:
输出格式:
一个整数,表示副驾驶的号码,使得从第一军官开始到该军官的累积奖牌总数超过THRESHOLD。如果这样的官员不存在,输出应为-1。
答案 0 :(得分:0)
它在c#语言中工作
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 bool 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;
}
答案 1 :(得分:0)
In Java#
-----------------------
public class CandidateCode
{
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;
}
}