Source code for submission s1378

Ants.java

  1.  
  2.  
  3. /*
  4.  * To change this template, choose Tools | Templates
  5.  * and open the template in the editor.
  6.  */
  7. import java.util.Scanner;
  8.  
  9. /**
  10.  *
  11.  * @author cteam051
  12.  */
  13. public class Ants {
  14.  
  15. /**
  16.   * @param args the command line arguments
  17.   */
  18. // public static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
  19. // public static StringTokenizer st = null;
  20. public static int[] pole;
  21. public static int[] mravenci;
  22.  
  23. // static String nextToken() {
  24. // while (!st.hasMoreTokens()) {
  25. // try {
  26. // st = new StringTokenizer(input.readLine());
  27. // } catch (IOException ex) {
  28. // }
  29. // }
  30. // return st.nextToken();
  31. // }
  32. //
  33. // static int nextInt() {
  34. // return Integer.parseInt(nextToken());
  35. // }
  36. //
  37. // static char nextChar() {
  38. // return nextToken().charAt(0);
  39. // }
  40. public static void main(String[] args) {
  41. int delka, n;
  42. int temp;
  43. char smer;
  44. int max;
  45. int leva, prava;
  46. pole = new int[100005];
  47. mravenci = new int[100005];
  48. Scanner sc = new Scanner(System.in);
  49. while (sc.hasNext()) {
  50. delka = sc.nextInt();
  51. n = sc.nextInt();
  52. max = -1;
  53. leva = -1;
  54. prava = -1;
  55. for (int i = 0; i <= delka; i++) {
  56. pole[i] = 0;
  57. }
  58. for (int i = 0; i < n; i++) {
  59. temp = sc.nextInt();
  60. smer = sc.nextLine().charAt(1);
  61. if (smer == 'L') {
  62. pole[temp] = 2;
  63. if (max < temp) {
  64. max=temp;
  65. leva = -1;
  66. prava = temp;
  67. } else if (max == temp) {
  68. prava = temp;
  69. }
  70. } else {
  71. pole[temp] = 1;
  72. if (max < (delka - temp)) {
  73. max=delka - temp;
  74. prava = -1;
  75. leva = temp;
  76. } else if (max == (delka - temp)) {
  77. leva = temp;
  78. }
  79. }
  80. }
  81. int j = 0;
  82. for (int i = 0; i <= delka; i++) {
  83. if (pole[i] != 0) {
  84. mravenci[j++] = i;
  85. }
  86. }
  87. if (leva >= 0) {
  88. for (int i = 0; i < j; i++) {
  89. if (mravenci[i] == leva) {
  90. leva = i;
  91. break;
  92. }
  93. }
  94. temp = leva + 1;
  95. for (int i = temp; i < j; i++) {
  96. if (pole[mravenci[i]] == 2) {
  97. leva++;
  98. }
  99. }
  100.  
  101. }
  102. if (prava >= 0) {
  103. for (int i = j - 1; i >= 0; i--) {
  104. if (mravenci[i] == prava) {
  105. prava = i;
  106. break;
  107. }
  108. }
  109. temp = prava - 1;
  110. for (int i = temp; i >= 0; i--) {
  111. if (pole[mravenci[i]] == 1) {
  112. prava--;
  113. }
  114. }
  115. }
  116. System.out.print("The last ant will fall down in "+max+" seconds - started at ");
  117. if(prava > -1 && leva > -1){
  118. System.out.println(+Math.min(prava, leva)+" and "+Math.max(prava, leva)+".");
  119. }
  120. else if (prava > -1) {
  121. System.out.println(+pole[mravenci[prava]]+".");
  122. }
  123. else{
  124. System.out.println(+pole[mravenci[leva]]+".");
  125. }
  126.  
  127. }
  128. }
  129. }
  130.