Advertisement
Guest User

Untitled

a guest
Feb 24th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.Collections;
  4. import java.util.Scanner;
  5. import static java.lang.System.*;
  6. import java.io.*;
  7.  
  8. public class hoofball {
  9.  
  10.  
  11. public static void main(String[] args)throws IOException{
  12.  
  13. Scanner scan = new Scanner(new File("data.dat"));
  14. scan.nextLine();
  15. String[] placeHolder = scan.nextLine().split(" ");
  16. ArrayList<Integer> list = new ArrayList<Integer>();
  17. ArrayList<Boolean> list2 = new ArrayList<Boolean>();
  18. ArrayList<Boolean> list3 = new ArrayList<Boolean>();
  19. int count = 1;
  20. for(String x: placeHolder)
  21. list.add(Integer.parseInt(x));
  22. Collections.sort(list);
  23. for(int x: list)
  24. list2.add(false);
  25. for(int x: list)
  26. list3.add(false);
  27. int point = list.size()-1;
  28. //System.out.println(right(list, list3, count, point));
  29. //System.out.println(left(list, list2, count, point));
  30. System.out.println(Math.min(left(list, list2, count, point), right(list, list3, count, point)));
  31.  
  32.  
  33.  
  34.  
  35. }
  36.  
  37. public static int left(ArrayList<Integer> list, ArrayList<Boolean> list2, int count, int point){
  38. while(!done(list2)){
  39. int temp1 = list.get(point);
  40. int temp2 = list.get(point-1);
  41. int temp3 = list.get(point-2);
  42.  
  43. if((temp1-temp2) > (temp2- temp3)){
  44. list2.set(point, true);
  45. list2.set(point-1, true);
  46. list2.set(point-2, true);
  47. point--;
  48. }
  49. else if((temp1-temp2) < (temp2- temp3)){
  50. count++;
  51. list2.set(point, true);
  52. list2.set(point-1, true);
  53. list2.set(point-2, true);
  54. point--;;
  55. }
  56. else{
  57. list2.set(point, true);
  58. list2.set(point-1, true);
  59. point = 0;
  60. list2.set(point, true);
  61. count += leftRight(list, list2, count, point);
  62. }
  63. }
  64. return count;
  65. }
  66. public static int leftRight(ArrayList<Integer> list, ArrayList<Boolean> list2, int count, int point){
  67.  
  68. while(!done(list2)){
  69. int temp1 = list.get(point);
  70. int temp2 = list.get(point+1);
  71. int temp3 = list.get(point+2);
  72.  
  73. if((temp2-temp1) > (temp3-temp2)){
  74. list2.set(point, true);
  75. list2.set(point+1, true);
  76. list2.set(point+2, true);
  77. point++;
  78. }
  79. else if((temp2-temp1) < (temp3-temp2)){
  80. count++;
  81. list2.set(point, true);
  82. list2.set(point+1, true);
  83. list2.set(point+2, true);
  84. point++;
  85. }
  86. else{
  87. list2.set(point, true);
  88. list2.set(point+1, true);
  89. point++;
  90. }
  91. }
  92. return count;
  93. }
  94. public static int right(ArrayList<Integer> list, ArrayList<Boolean> list3, int count, int point){
  95. count = 1;
  96. point = 0;
  97. while(!done(list3)){
  98. int temp1 = list.get(point);
  99. int temp2 = list.get(point+1);
  100. int temp3 = list.get(point+2);
  101.  
  102. if((temp2-temp1) > (temp3-temp2)){
  103. list3.set(point, true);
  104. list3.set(point+1, true);
  105. list3.set(point+2, true);
  106. point++;
  107. }
  108. else if((temp2-temp1) < (temp3-temp2)){
  109. count++;
  110. list3.set(point, true);
  111. list3.set(point+1, true);
  112. list3.set(point+2, true);
  113. point++;
  114. }
  115. else{
  116. list3.set(point, true);
  117. list3.set(point+1, true);
  118. list3.set(point+3, true);
  119. point++;
  120. }
  121. }
  122. return count;
  123. }
  124.  
  125. public static boolean done(ArrayList<Boolean> list2)
  126. {
  127. for(boolean x: list2)
  128. if(x == false)
  129. return false;
  130. return true;
  131.  
  132.  
  133. }
  134.  
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement