Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.*;
  3.  
  4. class meetings {
  5. public static void main(String[] args) throws IOException {
  6.  
  7. BufferedReader f = new BufferedReader(new FileReader("meetings.in"));
  8. PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("meetings.out")));
  9.  
  10. StringTokenizer st = new StringTokenizer(f.readLine());
  11. int N = Integer.parseInt(st.nextToken());
  12. int L = Integer.parseInt(st.nextToken());
  13.  
  14. int[][] cows = new int[N][3];
  15. int[][] cows2 = new int[N][3];
  16. ArrayList<Integer> trueOrder = new ArrayList<Integer>();
  17. int leftNum = 0;
  18. int rightNum = 0;
  19. for (int i = 0; i < N; i++) {
  20. st = new StringTokenizer(f.readLine());
  21. cows[i][0] = Integer.parseInt(st.nextToken());
  22. cows[i][1] = Integer.parseInt(st.nextToken());
  23. cows[i][2] = Integer.parseInt(st.nextToken());
  24. cows2[i][0] = cows[i][0];
  25. cows2[i][1] = cows[i][1];
  26. cows2[i][2] = cows[i][2];
  27. }
  28.  
  29. Arrays.sort(cows, (a, b) -> Integer.compare(a[1], b[1]));
  30.  
  31. for (int i = 0; i < N; i++)
  32. if (cows[i][2] == -1)
  33. trueOrder.add(i);
  34.  
  35. for (int i = N - 1; i >= 0; i--)
  36. if (cows[i][2] == 1)
  37. trueOrder.add(i);
  38.  
  39. for (int i = 0; i < N; i++) {
  40. cows2[trueOrder.get(i)][0] = cows[i][0];
  41. if (cows[i][2] == 1)
  42. cows2[i][1] = L - cows[i][1];
  43. }
  44.  
  45. Arrays.sort(cows2, (a, b) -> Integer.compare(a[1], b[1]));
  46.  
  47. int sum = 0;
  48. for (int i = 0; i < cows2.length; i++) {
  49. sum = sum + cows2[i][1];
  50. }
  51.  
  52. int partial = 0;
  53. int index = 0;
  54. while (partial <= sum / 2) {
  55. partial = partial + cows2[index][1];
  56. index++;
  57. }
  58. index--;
  59.  
  60. int time = cows2[index][1];
  61.  
  62. int entropy1 = 0;
  63. for (int i = 0; i < cows.length; i++)
  64. if (cows[i][2] == -1)
  65. entropy1 = entropy1 + i;
  66.  
  67. for (int i = 0; i < cows2.length; i++)
  68. cows2[index][1] = cows2[index][1] + cows2[index][2] * time;
  69.  
  70. Arrays.sort(cows2, (a, b) -> Integer.compare(a[1], b[1]));
  71.  
  72. int entropy2 = 0;
  73. for (int i = 0; i < cows2.length; i++)
  74. if (cows2[i][2] == -1)
  75. entropy2 = entropy2 + i;
  76.  
  77. out.println(entropy1 - entropy2);
  78. out.close();
  79. }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement