# Untitled

a guest
Oct 18th, 2019
86
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1.
2. import javax.print.DocFlavor;
3. import java.io.*;
4. import java.lang.reflect.Array;
5. import java.math.BigInteger;
6. import java.util.*;
8.
9. import static java.lang.Math.*;
10.
11. @SuppressWarnings("Duplicates")
12.
13. public class solveLOL {
14. FastScanner in;
15. PrintWriter out;
16. boolean systemIO = true, multitests = false;
17.
18. lol arr[];
19. ArrayList<TreeSet<lol>> mas = new ArrayList<>();
20. int mx = 0;
21.
22. public void solve() {
23. int n = in.nextInt() * 2;
24. arr = new lol[n];
25. for (int i = 0; i < n; ++i) {
26. double x1 = in.nextDouble(), y1 = in.nextDouble(), x2 = in.nextDouble(), y2 = in.nextDouble();
27. arr[i] = new lol((y1 - y2), (x2 - x1), javabad(-((y1 - y2) * x1 + (x2 - x1) * y1)));
28. double p = gcd(gcd(abs(arr[i].a), abs(arr[i].b)), abs(arr[i].c));
29. arr[i] = new lol(arr[i].a / p, arr[i].b / p, arr[i].c / p);
30. }
31. Arrays.sort(arr, (o1, o2) -> o1.a != o2.a ? Double.compare(o1.a, o2.a) : (o1.b != o2.b) ? Double.compare(o1.b, o2.b) : Double.compare(o1.c, o2.c));
32. mas.add(new TreeSet<>((o1, o2) -> o1.a != o2.a ? Double.compare(o1.a, o2.a) : (o1.b != o2.b) ? Double.compare(o1.b, o2.b) : Double.compare(o1.c, o2.c)));
34. for (int i = 1; i < n; ++i) {
35. if (arr[i].a == arr[i - 1].a && arr[i].b == arr[i - 1].b) {
37. } else {
38. mx++;
39. mas.add(new TreeSet<>((o1, o2) -> o1.a != o2.a ? Double.compare(o1.a, o2.a) : (o1.b != o2.b) ? Double.compare(o1.b, o2.b) : Double.compare(o1.c, o2.c)));
41. }
42. }
43. double k = mas.get(0).first().c;
44. for (lol x : mas.get(0)) {
45. if (x != mas.get(0).first() && check(javabad(x.c - k))) {
46. double ans = x.c - k;
47. System.out.println(String.format("%8.10f", ans).replace(',', '.'));
48. System.exit(0);
49. }
50. }
51. System.out.println("-1.000000000");
52. }
53.
54. boolean check(double res) {
55. for (int i = 0; i < mas.size(); i++) {
56. for (lol k : mas.get(i)) {
57. if (!mas.get(i).contains(new lol(k.a, k.b, javabad(k.c + res))) && !mas.get(i).contains(new lol(k.a, k.b, javabad(k.c - res)))) {
58. return false;
59. }
60. }
61. }
62. return true;
63. }
64. /*
65. 3
66. 0 0 0 1
67. 1 0 1 1
68. 2 0 2 1
69. 3 0 3 1
70. 0 0 1 0
71. 0 1 1 1
72. */
73.
75. if (Math.abs(p) == 0) {
76. return 0;
77. } else {
78. return p;
79. }
80. }
81.
82. class lol {
83. double a, b, c;
84.
85.
86. lol(double A, double B, double C) {
87. this.a = A;
88. this.b = B;
89. this.c = C;
90. }
91. }
92.
93. double gcd(double a, double b) {
94. return b == 1 ? gcd(b, a % b) : a;
95. }
96.
97. void shuffleArray(long[] ar) {
99. for (int i = ar.length - 1; i > 0; i--) {
100. int index = rnd.nextInt(i + 1);
101. long a = ar[index];
102. ar[index] = ar[i];
103. ar[i] = a;
104. }
105. }
106.
108. long[] ar = new long[size_];
109. for (int i = 0; i < size_; i++) {
110. ar[i] = in.nextLong();
111. }
112. return ar;
113. }
114.
115. void printArray(long[] ar) {
116. for (long k : ar) {
117. System.out.print(k + " ");
118. }
119. System.out.println();
120. }
121.
122. void reverseArray(long[] ar) {
123. for (int i = 0, j = ar.length - 1; i < j; i++, j--) {
124. long a = ar[i];
125. ar[i] = ar[j];
126. ar[j] = a;
127. }
128. }
129.
130.
131. class FastScanner {
133. StringTokenizer st;
134.
135. FastScanner(File f) {
136. try {
138. } catch (FileNotFoundException e) {
139. e.printStackTrace();
140. }
141. }
142.
143. FastScanner(InputStream f) {
145. }
146.
147. String nextLine() {
148. try {
150. } catch (IOException e) {
151. return null;
152. }
153. }
154.
155. String next() {
156. while (st == null || !st.hasMoreTokens()) {
157. try {
159. } catch (IOException e) {
160. e.printStackTrace();
161. }
162. }
163. return st.nextToken();
164. }
165.
166. int nextInt() {
167. return Integer.parseInt(next());
168. }
169.
170. long nextLong() {
171. return Long.parseLong(next());
172. }
173.
174. double nextDouble() {
175. return Double.parseDouble(next());
176. }
177.
178. }
179.
180. //String.format("%8.3f", ans).replace(',', '.')
181. private void run() throws IOException {
182. if (systemIO) {
183. in = new solveLOL.FastScanner(System.in);
184. out = new PrintWriter(System.out);
185. } else {
186. in = new solveLOL.FastScanner(new File("aplusb.in"));
187. out = new PrintWriter(new File("aplusb.out"));
188. }
189. for (int t = multitests ? in.nextInt() : 1; t-- > 0; )
190. solve();
191.
192. out.close();
193. }
194.
195. public static void main(String[] arg) throws IOException {
196. new solveLOL().run();
197. }
198.
199. }
RAW Paste Data