fork(1) download
  1. import java.util.*;
  2.  
  3. class task4
  4. {
  5. public static int FindMax(double[] resRun, int[] nRun)
  6. {
  7. double max = resRun[0];
  8. int maxN = 0;
  9. for (int i=1; i<resRun.length; i++)
  10. {
  11. if (resRun[i] > max)
  12. {
  13. max = resRun[i];
  14. maxN = i;
  15. }
  16. }
  17. return maxN;
  18. }
  19.  
  20. public static void main (String[] args)
  21. {
  22. final int teamSize = 4; //размер отбираемой команды
  23. int n; //количество бегунов
  24. int[] nRun = new int[teamSize]; //номера бегунов
  25. double[] resRun = new double[teamSize]; //результаты этих бегунов
  26.  
  27. Scanner in = new Scanner(System.in);
  28. n = in.nextInt();
  29. if (n < teamSize)
  30. {
  31. System.out.println("n не должно быть меньше 4");
  32. return;
  33. }
  34.  
  35. double max = 0; //результат худшего бегуна в отобранной команде для сравнения с очередным результатом
  36. int maxN = 0; //номер (индекс) худшего бегуна в массиве
  37. for (int i = 0; i < n; i++)
  38. {
  39. double a = in.nextDouble();
  40. if (a <= 0)
  41. {
  42. System.out.printf("Результаты должны быть больше 0");
  43. return;
  44. }
  45.  
  46. if (i<teamSize) //заполяем команду первыми попавшимися бегунами
  47. {
  48. nRun[i] = i;
  49. resRun[i] = a;
  50. if (i==teamSize-1)
  51. {
  52. maxN = FindMax(resRun, nRun);
  53. max = resRun[maxN];
  54. }
  55. }
  56.  
  57. else if (a < max) //заменяем бегуна с наихудшим результатом бегуном, с лучшим результатом
  58. {
  59. resRun[maxN] = a;
  60. nRun[maxN] = i;
  61. maxN = FindMax(resRun, nRun);
  62. max = resRun[maxN];
  63. }
  64. }
  65.  
  66. Arrays.sort(nRun);
  67.  
  68. for (int i = 0; i<teamSize; i++)
  69. {
  70. System.out.println(nRun[i]+1);
  71. }
  72. }
  73. }
Success #stdin #stdout 0.12s 2841600KB
stdin
12
2.5
9
14
7.1
1.3
4.9
6.7
1.9
10.01
2.45
0.01
13
stdout
5
8
10
11