Advertisement
Guest User

java long twosets

a guest
Jun 25th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.68 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.*;
  3. import java.util.StringTokenizer;
  4.  
  5. public class twosets {
  6. public static void main(String[] args) throws IOException {
  7. FastScanner in = new FastScanner();
  8. int n = in.nextInt();
  9.  
  10. if( (n *(n+1))/2 % 2 != 0) {
  11. System.out.println("NO");
  12. }
  13. else {
  14. System.out.println("YES");
  15. List<Integer> set1 = new ArrayList<>();
  16. List<Integer> set2 = new ArrayList<>();
  17. long target = (n*(n+1))/4;
  18.  
  19. long set1Sum = 0;
  20.  
  21. for (int i = 1; i <= n; i++) {
  22. if (set1Sum + i< target) {
  23. set1Sum += i;
  24. set1.add(i);
  25. }
  26. else {
  27. // find the largest number u can add to this while removing a num
  28. // i is the current largest number we have
  29.  
  30. // to replace the number, find the difference between target and n = i, then replace the i'th term with n;
  31.  
  32. long dif = n - (target - set1Sum);
  33. int diff = (int)(dif);
  34. set1.remove(diff-1);
  35. set1.add(n);
  36. break;
  37. }
  38. }
  39.  
  40. int c = 0;
  41. for (int i = 1; i <= n; i++) {
  42. if (c < set1.size()) {
  43. if (set1.get(c) != i) {
  44. set2.add(i);
  45. }
  46. else c++;
  47. }
  48. else set2.add(i);
  49. }
  50.  
  51.  
  52.  
  53. System.out.println(set1.size());
  54. for (int x: set1) {
  55. System.out.print(x + " ");
  56. }
  57. System.out.println();
  58.  
  59. System.out.println(set2.size());
  60. for (int x: set2) {
  61. System.out.print(x + " ");
  62. }
  63. System.out.println();
  64. }
  65. }
  66.  
  67. public static class FastScanner {
  68. BufferedReader br;
  69. StringTokenizer st;
  70.  
  71. public FastScanner(String s) {
  72. try {
  73. br = new BufferedReader(new FileReader(s));
  74. } catch (FileNotFoundException e) {
  75. // TODO Auto-generated catch block
  76. e.printStackTrace();
  77. }
  78. }
  79.  
  80. public FastScanner() {
  81. br = new BufferedReader(new InputStreamReader(System.in));
  82. }
  83.  
  84. String nextToken() {
  85. while (st == null || !st.hasMoreElements()) {
  86. try {
  87. st = new StringTokenizer(br.readLine());
  88. } catch (IOException e) {
  89. // TODO Auto-generated catch block
  90. e.printStackTrace();
  91. }
  92. }
  93. return st.nextToken();
  94. }
  95.  
  96. String nextLine() {
  97. st = null;
  98. try {
  99. return br.readLine();
  100. } catch (IOException e) {
  101. // TODO Auto-generated catch block
  102. e.printStackTrace();
  103. }
  104. return null;
  105. }
  106.  
  107. int nextInt() {
  108. return Integer.parseInt(nextToken());
  109. }
  110.  
  111. long nextLong() {
  112. return Long.parseLong(nextToken());
  113. }
  114.  
  115. double nextDouble() {
  116. return Double.parseDouble(nextToken());
  117. }
  118. }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement