File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed
Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.io.BufferedReader ;
3+ import java.io.BufferedWriter ;
4+ import java.io.InputStreamReader ;
5+ import java.io.OutputStreamWriter ;
6+ import java.util.* ;
7+ public class Main {
8+ static BufferedReader br;
9+ static BufferedWriter bw;
10+ static int [] comb = new int [8 ];
11+ static boolean [] visited = new boolean [8 ];
12+ static int [] points = new int [8 ];
13+ static int count = 0 ;
14+ public static void main (String [] args ) throws Exception {
15+ br = new BufferedReader (new InputStreamReader (System . in));
16+ bw = new BufferedWriter (new OutputStreamWriter (System . out));
17+ StringTokenizer st = new StringTokenizer (br. readLine());
18+ for (int i= 0 ;i< 8 ;i++ ){
19+ points[i] = Integer . parseInt(st. nextToken());
20+ }
21+ combination(0 );
22+ bw. write(count+ " " );
23+ bw. flush();
24+ }
25+ public static void combination (int depth ){
26+ if (depth== 8 ){
27+ for (int i= 0 ;i< 8 ;i++ ){
28+ if (omok(i)){return ;}
29+ }
30+ count++ ;
31+ return ;
32+ }
33+
34+ for (int j= 0 ;j< 8 ;j++ ){
35+ if (visited[j]){continue ;}
36+ visited[j] = true ;
37+ comb[depth] = points[j];
38+ combination(depth+ 1 );
39+ visited[j] = false ;
40+ }
41+ }
42+ public static boolean omok (int curpoint ){
43+ double prev = (double )comb[(curpoint+ 7 )% 8 ];
44+ double next = (double )comb[(curpoint+ 1 )% 8 ];
45+ double slope = prev/ next + 1 ;
46+ double distance = (prev / slope) * Math . sqrt(2 );
47+ if (comb[curpoint] < distance){return true ;}
48+ return false ;
49+ }
50+ }
51+ ```
You can’t perform that action at this time.
0 commit comments