fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. static int N;
  11. static int[] table;
  12. static int count = 0;
  13.  
  14. static void f(int n)
  15. {
  16. count = 0;
  17. N = n;
  18. table = new int[N * N];
  19.  
  20. int i = 0;
  21. for (int y = 0; y < N; y++)
  22. {
  23. for (int x = 0; x < N; x++)
  24. {
  25. table[i++] = y << 16 | x;
  26. }
  27. }
  28.  
  29. System.out.println("N=" + N);
  30. int[] pos = new int[N];
  31. int[] distance = new int[N * (N - 1) >> 1];
  32. f(pos, distance, 0, 0, 0);
  33. System.out.println();
  34. }
  35.  
  36. static void f(int[] pos, int[] distance, int p, int a, int b)
  37. {
  38. if (a == N)
  39. {
  40. System.out.printf("%d %s%n", ++count, Arrays.toString(pos));
  41. return;
  42. }
  43.  
  44. loop: for (int i = p; i < N * N; i++)
  45. {
  46. pos[a] = i;
  47. int c = b;
  48. for (int j = 0; j < a; j++)
  49. {
  50. distance[c++] = distancesq(pos[j], pos[a]);
  51. }
  52. for (int j = b; j < c; j++)
  53. {
  54. for (int k = 0; k < j; k++)
  55. {
  56. if (distance[j] == distance[k]) continue loop;
  57. }
  58. }
  59. f(pos, distance, i + 1, a + 1, c);
  60. }
  61. }
  62.  
  63. static int distancesq(int i, int j)
  64. {
  65. i = table[i];
  66. j = table[j];
  67. int x = ((short) i) - ((short) j);
  68. int y = (i >> 16) - (j >> 16);
  69. return x * x + y * y;
  70. }
  71.  
  72. public static void main(String[] args)
  73. {
  74. for (int i = 5; i <= 7; i++)
  75. {
  76. f(i);
  77. }
  78. }
  79. }
Success #stdin #stdout 0.43s 320448KB
stdin
Standard input is empty
stdout
N=5
1 [0, 1, 4, 11, 23]
2 [0, 1, 4, 13, 23]
3 [0, 1, 7, 9, 24]
4 [0, 1, 7, 15, 24]
5 [0, 1, 7, 20, 23]
6 [0, 1, 7, 21, 24]
7 [0, 1, 7, 22, 24]
8 [0, 1, 8, 21, 23]
9 [0, 1, 9, 13, 24]
10 [0, 1, 9, 18, 24]
11 [0, 1, 10, 13, 19]
12 [0, 1, 10, 18, 22]
13 [0, 1, 10, 18, 24]
14 [0, 1, 11, 15, 24]
15 [0, 1, 17, 20, 23]
16 [0, 1, 17, 21, 24]
17 [0, 1, 18, 21, 24]
18 [0, 2, 3, 19, 22]
19 [0, 2, 5, 14, 18]
20 [0, 2, 5, 17, 23]
21 [0, 2, 5, 18, 24]
22 [0, 2, 7, 20, 23]
23 [0, 2, 8, 9, 20]
24 [0, 2, 8, 19, 20]
25 [0, 2, 14, 17, 18]
26 [0, 2, 14, 18, 23]
27 [0, 2, 15, 22, 23]
28 [0, 2, 17, 18, 24]
29 [0, 2, 17, 23, 24]
30 [0, 2, 18, 19, 22]
31 [0, 3, 4, 11, 21]
32 [0, 3, 4, 13, 21]
33 [0, 3, 5, 7, 24]
34 [0, 3, 5, 11, 24]
35 [0, 3, 6, 19, 24]
36 [0, 3, 6, 22, 23]
37 [0, 3, 6, 23, 24]
38 [0, 3, 7, 19, 24]
39 [0, 3, 7, 20, 21]
40 [0, 3, 7, 23, 24]
41 [0, 3, 10, 14, 19]
42 [0, 3, 13, 19, 24]
43 [0, 3, 16, 21, 23]
44 [0, 3, 16, 22, 23]
45 [0, 3, 17, 20, 21]
46 [0, 3, 17, 20, 22]
47 [0, 3, 17, 23, 24]
48 [0, 4, 5, 11, 19]
49 [0, 4, 5, 13, 19]
50 [0, 4, 6, 11, 21]
51 [0, 4, 8, 13, 23]
52 [0, 4, 9, 11, 15]
53 [0, 4, 9, 13, 15]
54 [0, 4, 10, 11, 19]
55 [0, 4, 10, 16, 21]
56 [0, 4, 10, 16, 23]
57 [0, 4, 13, 14, 15]
58 [0, 4, 14, 18, 21]
59 [0, 4, 14, 18, 23]
60 [0, 5, 7, 19, 20]
61 [0, 5, 9, 11, 24]
62 [0, 5, 9, 13, 24]
63 [0, 5, 9, 16, 19]
64 [0, 5, 9, 18, 24]
65 [0, 5, 11, 14, 24]
66 [0, 5, 11, 21, 24]
67 [0, 5, 17, 19, 20]
68 [0, 5, 17, 21, 24]
69 [0, 5, 18, 21, 24]
70 [0, 6, 7, 9, 20]
71 [0, 6, 7, 22, 24]
72 [0, 6, 9, 18, 19]
73 [0, 6, 9, 18, 23]
74 [0, 6, 11, 14, 24]
75 [0, 6, 14, 15, 19]
76 [0, 6, 14, 23, 24]
77 [0, 6, 15, 19, 24]
78 [0, 6, 15, 23, 24]
79 [0, 6, 18, 19, 21]
80 [0, 6, 18, 21, 23]
81 [0, 6, 19, 22, 24]
82 [0, 7, 9, 15, 20]
83 [0, 8, 9, 15, 19]
84 [0, 8, 14, 15, 19]
85 [0, 9, 13, 23, 24]
86 [0, 9, 15, 17, 20]
87 [0, 9, 17, 23, 24]
88 [0, 9, 18, 20, 22]
89 [0, 10, 13, 18, 22]
90 [0, 10, 13, 18, 24]
91 [0, 10, 13, 19, 24]
92 [0, 10, 14, 15, 23]
93 [0, 10, 14, 18, 23]
94 [0, 10, 18, 19, 22]
95 [0, 11, 15, 19, 24]
96 [0, 11, 15, 23, 24]
97 [0, 13, 15, 19, 24]
98 [0, 13, 19, 21, 24]
99 [0, 15, 17, 23, 24]
100 [0, 16, 17, 19, 20]
101 [0, 17, 19, 21, 24]
102 [0, 18, 19, 20, 22]
103 [1, 2, 4, 15, 22]
104 [1, 2, 5, 17, 19]
105 [1, 2, 8, 21, 24]
106 [1, 2, 9, 22, 24]
107 [1, 2, 11, 19, 23]
108 [1, 2, 18, 21, 24]
109 [1, 3, 6, 18, 24]
110 [1, 3, 6, 20, 23]
111 [1, 3, 8, 16, 20]
112 [1, 3, 8, 21, 24]
113 [1, 3, 16, 23, 24]
114 [1, 3, 18, 20, 21]
115 [1, 4, 7, 9, 20]
116 [1, 4, 7, 15, 20]
117 [1, 4, 7, 20, 21]
118 [1, 4, 7, 23, 24]
119 [1, 4, 8, 15, 20]
120 [1, 4, 8, 20, 21]
121 [1, 4, 8, 21, 22]
122 [1, 4, 9, 13, 20]
123 [1, 4, 10, 14, 15]
124 [1, 4, 11, 15, 20]
125 [1, 4, 17, 20, 21]
126 [1, 4, 17, 22, 24]
127 [1, 4, 17, 23, 24]
128 [1, 4, 18, 21, 22]
129 [1, 4, 18, 21, 23]
130 [1, 5, 10, 13, 23]
131 [1, 5, 13, 14, 23]
132 [1, 5, 13, 22, 23]
133 [1, 5, 14, 17, 19]
134 [1, 5, 17, 19, 22]
135 [1, 6, 10, 14, 24]
136 [1, 6, 10, 20, 24]
137 [1, 6, 10, 22, 24]
138 [1, 6, 15, 18, 24]
139 [1, 7, 19, 22, 24]
140 [1, 8, 9, 16, 20]
141 [1, 8, 14, 20, 24]
142 [1, 9, 10, 14, 24]
143 [1, 10, 11, 19, 23]
144 [1, 11, 14, 19, 23]
145 [1, 11, 16, 20, 24]
146 [1, 11, 20, 23, 24]
147 [1, 13, 20, 23, 24]
148 [2, 3, 5, 20, 22]
149 [2, 3, 6, 20, 23]
150 [2, 3, 9, 15, 17]
151 [2, 3, 13, 15, 21]
152 [2, 3, 16, 20, 23]
153 [2, 4, 5, 6, 24]
154 [2, 4, 6, 15, 24]
155 [2, 4, 7, 21, 24]
156 [2, 4, 9, 10, 16]
157 [2, 4, 9, 16, 20]
158 [2, 4, 9, 17, 21]
159 [2, 4, 10, 16, 17]
160 [2, 4, 10, 16, 21]
161 [2, 4, 15, 16, 22]
162 [2, 4, 16, 17, 20]
163 [2, 4, 17, 20, 21]
164 [2, 4, 19, 21, 22]
165 [2, 5, 6, 14, 24]
166 [2, 5, 6, 22, 24]
167 [2, 5, 7, 19, 23]
168 [2, 5, 21, 22, 24]
169 [2, 6, 11, 14, 24]
170 [2, 6, 14, 23, 24]
171 [2, 7, 9, 15, 21]
172 [2, 8, 9, 10, 20]
173 [2, 8, 9, 20, 22]
174 [2, 8, 10, 13, 20]
175 [2, 8, 10, 20, 21]
176 [2, 9, 20, 22, 23]
177 [3, 4, 5, 7, 20]
178 [3, 4, 5, 11, 20]
179 [3, 4, 5, 16, 20]
180 [3, 4, 6, 21, 23]
181 [3, 4, 7, 19, 20]
182 [3, 4, 7, 20, 22]
183 [3, 4, 7, 20, 23]
184 [3, 4, 7, 21, 24]
185 [3, 4, 11, 14, 15]
186 [3, 4, 13, 19, 20]
187 [3, 4, 14, 16, 20]
188 [3, 4, 14, 16, 22]
189 [3, 4, 16, 20, 23]
190 [3, 4, 17, 20, 23]
191 [3, 4, 17, 21, 24]
192 [3, 5, 6, 18, 24]
193 [3, 5, 10, 14, 20]
194 [3, 6, 10, 20, 24]
195 [3, 7, 15, 20, 22]
196 [3, 8, 10, 14, 20]
197 [3, 8, 14, 20, 22]
198 [3, 8, 14, 20, 24]
199 [3, 8, 16, 19, 20]
200 [3, 9, 10, 11, 21]
201 [3, 9, 10, 15, 17]
202 [3, 9, 11, 14, 21]
203 [3, 9, 11, 21, 22]
204 [3, 9, 15, 17, 22]
205 [3, 10, 13, 15, 21]
206 [3, 11, 20, 21, 24]
207 [3, 13, 14, 15, 21]
208 [3, 13, 18, 20, 24]
209 [3, 13, 20, 21, 24]
210 [4, 5, 6, 15, 19]
211 [4, 5, 7, 8, 24]
212 [4, 5, 7, 19, 24]
213 [4, 5, 8, 15, 16]
214 [4, 5, 8, 16, 21]
215 [4, 5, 9, 11, 20]
216 [4, 5, 9, 13, 20]
217 [4, 5, 9, 15, 18]
218 [4, 5, 9, 16, 20]
219 [4, 5, 11, 20, 21]
220 [4, 5, 16, 22, 24]
221 [4, 5, 17, 19, 24]
222 [4, 5, 17, 20, 21]
223 [4, 6, 10, 15, 19]
224 [4, 7, 8, 20, 22]
225 [4, 7, 9, 15, 24]
226 [4, 8, 10, 13, 20]
227 [4, 8, 10, 15, 19]
228 [4, 8, 10, 20, 21]
229 [4, 8, 15, 16, 23]
230 [4, 8, 15, 19, 20]
231 [4, 8, 15, 20, 22]
232 [4, 8, 16, 21, 23]
233 [4, 8, 19, 20, 21]
234 [4, 9, 10, 13, 20]
235 [4, 9, 13, 20, 23]
236 [4, 9, 15, 17, 24]
237 [4, 9, 16, 20, 23]
238 [4, 9, 17, 20, 23]
239 [4, 10, 14, 16, 21]
240 [4, 10, 14, 19, 21]
241 [4, 11, 14, 15, 20]
242 [4, 11, 14, 16, 20]
243 [4, 11, 14, 16, 22]
244 [4, 11, 15, 19, 20]
245 [4, 11, 15, 20, 23]
246 [4, 13, 15, 19, 20]
247 [4, 13, 19, 20, 21]
248 [4, 14, 15, 16, 22]
249 [4, 15, 16, 22, 24]
250 [4, 15, 17, 18, 24]
251 [4, 15, 17, 20, 23]
252 [4, 17, 19, 20, 21]
253 [5, 6, 15, 18, 24]
254 [5, 7, 10, 19, 23]
255 [5, 7, 19, 22, 23]
256 [5, 8, 15, 19, 24]
257 [5, 9, 10, 16, 24]
258 [5, 9, 10, 18, 24]
259 [5, 9, 14, 16, 20]
260 [5, 9, 14, 18, 20]
261 [5, 9, 15, 16, 24]
262 [5, 9, 18, 19, 20]
263 [5, 10, 14, 21, 24]
264 [5, 11, 14, 23, 24]
265 [5, 11, 19, 20, 24]
266 [5, 13, 14, 20, 24]
267 [5, 13, 19, 20, 24]
268 [6, 7, 10, 22, 24]
269 [6, 9, 15, 19, 20]
270 [6, 10, 19, 22, 24]
271 [7, 8, 14, 20, 22]
272 [7, 9, 14, 15, 21]
273 [7, 9, 15, 21, 22]
274 [8, 9, 16, 19, 20]
275 [8, 14, 15, 20, 22]
276 [9, 10, 11, 20, 24]
277 [9, 10, 13, 20, 21]
278 [9, 10, 14, 20, 23]
279 [9, 11, 15, 20, 24]
280 [9, 13, 15, 20, 24]

N=6
1 [0, 1, 9, 23, 32, 35]
2 [0, 2, 5, 21, 28, 34]
3 [0, 2, 16, 18, 29, 35]
4 [0, 3, 5, 20, 25, 31]
5 [0, 3, 12, 26, 34, 35]
6 [0, 6, 17, 19, 33, 35]
7 [0, 10, 11, 15, 18, 30]
8 [0, 12, 21, 28, 29, 30]
9 [1, 7, 14, 30, 33, 35]
10 [2, 5, 17, 27, 30, 31]
11 [3, 5, 13, 23, 24, 30]
12 [4, 5, 8, 18, 30, 33]
13 [4, 10, 15, 30, 32, 35]
14 [5, 6, 7, 14, 23, 35]
15 [5, 11, 12, 22, 30, 32]
16 [5, 17, 20, 24, 25, 35]

N=7
1 [0, 2, 9, 20, 21, 40, 48]
2 [0, 3, 14, 15, 40, 44, 48]
3 [0, 4, 8, 33, 34, 45, 48]
4 [0, 8, 27, 28, 39, 46, 48]
5 [2, 6, 12, 28, 29, 42, 45]
6 [3, 6, 19, 20, 36, 42, 46]
7 [4, 6, 11, 14, 27, 36, 42]
8 [6, 12, 21, 34, 37, 42, 44]