2014-09-04 3 views
-5

Распределение медалей Это церемония распространения медали. 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)Решение о распределении медалей в Java

Если суммировать количество медалей, полученных начиная с первого офицера, который был бы первым офицером, для которых совокупная сумма превышает данную медаль count THRESHOLD (1 < = THRESHOLD < = 10^9)?

ввода/вывода Характеристики Формат ввода:

Вам дается 5 входов:

  1. input1 = N, число итераций
  2. вход2 = граф, массив отсчетов медали в каждой итерации
  3. input3 = from, массив начальных индексов на каждой итерации
  4. input4 = to, массив конечных индексов на каждой итерации
  5. данных 5 = ПОРОГ, пороговое значение счетчика медали

Выходной формат:

Целое число, представляющее собой количество первого сотрудника таким образом, что накопленная сумма медали, начиная с первого сотрудника Шифрование до этого офицера превышает ПОРОГ , Результат должен быть -1, если такого офицера не существует.

+1

Вы должны начать с вашим алгоритмом и сделать некоторый код. Если это не сработает, обратитесь за помощью к вашему коду. – ErstwhileIII

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

Большое вам спасибо! его работа –

+0

вы приветствуете. затем нажмите кнопку «Ответ» ** – mansoor

+0

. Не проходит весь тестовый пример, только один тестовый пример проходит. –

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; 
    } 
} 
Смежные вопросы