Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.86 KB | None | 0 0
  1. import java.io.File;
  2. import java.util.Arrays;
  3. import java.util.Scanner;
  4.  
  5. public class Senior4
  6. {
  7. public static void main(String[] args)
  8. {
  9. try
  10. {
  11. Scanner s = new Scanner(new File("4sr_sampledata.txt"));
  12. for (int k = 0; k < 5; k++)
  13. {
  14. String[] numbers = s.nextLine().split(" ");
  15. int[] oppMarkers = {Integer.parseInt(numbers[0]), Integer.parseInt(numbers[1]), Integer.parseInt(numbers[2])};
  16. int[] playerMarkers = {Integer.parseInt(numbers[3]), Integer.parseInt(numbers[4]), Integer.parseInt(numbers[5])};
  17. Arrays.sort(oppMarkers);
  18. Arrays.sort(playerMarkers);
  19. int n = Integer.parseInt(numbers[6]);
  20. int[] moves = new int[n];
  21. for (int i = 0; i < n; i++)
  22. {
  23. moves[i] = Integer.parseInt(numbers[7 + i]);
  24. }
  25. for (int i = 0; i < n; i++)
  26. {
  27. if (i % 2 == 0) //opponent
  28. {
  29. if (contains(oppMarkers, oppMarkers[0] + moves[i]) || contains(playerMarkers, oppMarkers[0] + moves[i]) || oppMarkers[0] + moves[i] > 52)
  30. {
  31. continue;
  32. }
  33. oppMarkers[0] += moves[i];
  34. if (isPrime(oppMarkers[0]))
  35. {
  36. for (int j = 0; j < 6; j++)
  37. {
  38. if (contains(oppMarkers, oppMarkers[0] + 1) || contains(playerMarkers, oppMarkers[0] + 1) || oppMarkers[0] + 1 > 52)
  39. {
  40. break;
  41. }
  42. oppMarkers[0]++;
  43. }
  44. }
  45. else if (isPerfectSquare(oppMarkers[0]))
  46. {
  47. for (int j = 0; j < 6; j++)
  48. {
  49. if (contains(oppMarkers, oppMarkers[0] - 1) || contains(playerMarkers, oppMarkers[0] - 1) || oppMarkers[0] - 1 > 52)
  50. {
  51. break;
  52. }
  53. oppMarkers[0]--;
  54. }
  55. }
  56. else if (horizToVert(oppMarkers[0] - moves[i], oppMarkers[0]))
  57. {
  58. if (oppMarkers[0] % moves[i] != 0)
  59. {
  60. oppMarkers[0] -= moves[i];
  61. }
  62. if (contains(oppMarkers, findNextMult(oppMarkers[0], moves[i])) || contains(playerMarkers, findNextMult(oppMarkers[0], moves[i])))
  63. {
  64.  
  65. }
  66. else if (oppMarkers[0] % moves[i] != 0)
  67. {
  68. oppMarkers[0] = findNextMult(oppMarkers[0], moves[i]);
  69. }
  70. }
  71. Arrays.sort(oppMarkers);
  72. }
  73. else //player
  74. {
  75. if (contains(oppMarkers, playerMarkers[0] + moves[i]) || contains(playerMarkers, playerMarkers[0] + moves[i]) || playerMarkers[0] + moves[i] > 52)
  76. {
  77. continue;
  78. }
  79. playerMarkers[0] += moves[i];
  80. if (isPrime(playerMarkers[0]))
  81. {
  82. for (int j = 0; j < 6; j++)
  83. {
  84. if (contains(oppMarkers, playerMarkers[0] + 1) || contains(playerMarkers, playerMarkers[0] + 1) || playerMarkers[0] + 1 > 52)
  85. {
  86. break;
  87. }
  88. playerMarkers[0]++;
  89. }
  90. }
  91. else if (isPerfectSquare(playerMarkers[0]))
  92. {
  93. for (int j = 0; j < 6; j++)
  94. {
  95. if (contains(oppMarkers, playerMarkers[0] - 1) || contains(playerMarkers, playerMarkers[0] - 1) || playerMarkers[0] - 1 > 52)
  96. {
  97. break;
  98. }
  99. playerMarkers[0]--;
  100. }
  101. }
  102. else if (horizToVert(playerMarkers[0] - moves[i], playerMarkers[0]))
  103. {
  104. if (playerMarkers[0] % moves[i] != 0)
  105. {
  106. playerMarkers[0] -= moves[i];
  107. }
  108. if (contains(oppMarkers, findNextMult(playerMarkers[0], moves[i])) || contains(playerMarkers, findNextMult(playerMarkers[0], moves[i])))
  109. {
  110.  
  111. }
  112. else if (playerMarkers[0] % moves[i] != 0)
  113. {
  114. playerMarkers[0] = findNextMult(playerMarkers[0], moves[i]);
  115. }
  116. }
  117. Arrays.sort(playerMarkers);
  118. }
  119. }
  120. System.out.println("" + (oppMarkers[0] + oppMarkers[1] + oppMarkers[2]) + " " + (playerMarkers[0] + playerMarkers[1] + playerMarkers[2]));
  121. }
  122. s.close();
  123. }
  124. catch (Exception e)
  125. {
  126. System.out.println(e);
  127. }
  128. }
  129.  
  130. public static boolean isPrime(int n)
  131. {
  132. int sqrt = (int) Math.sqrt(n) + 1;
  133. for (int i = 2; i < sqrt; i++) {
  134. if (n % i == 0) {
  135. return false;
  136. }
  137. }
  138. return true;
  139. }
  140.  
  141. public static boolean isPerfectSquare(int n)
  142. {
  143. if (n == 9 || n == 16 || n == 25 || n == 36 || n == 49)
  144. {
  145. return true;
  146. }
  147. return false;
  148. }
  149.  
  150. public static boolean horizToVert(int prev, int next)
  151. {
  152. if ((prev <= 6 && next >= 8) || (prev <= 11 && next >= 13) || (prev <= 16 && next >= 18) || (prev <= 21 && next >= 23) || (prev <= 26 && next >= 28) || (prev <= 34 && next >= 36) || (prev <= 39 && next >= 41) || (prev <= 44 && next >= 46) || (prev <= 49 && next >= 51))
  153. {
  154. return true;
  155. }
  156. return false;
  157. }
  158.  
  159. public static boolean contains(int[] markers, int n)
  160. {
  161. for (int m: markers)
  162. {
  163. if (m == n)
  164. {
  165. return true;
  166. }
  167. }
  168. return false;
  169. }
  170. public static int findNextMult(int n, int move)
  171. {
  172. while (n % move != 0)
  173. {
  174. n++;
  175. }
  176. return n;
  177. }
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement