-
Notifications
You must be signed in to change notification settings - Fork 0
/
Queen'sAttackII.java
48 lines (46 loc) · 2.1 KB
/
Queen'sAttackII.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Queen2{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int k = in.nextInt();
int rQueen = in.nextInt();
int cQueen = in.nextInt();
int sum1_1 = rQueen - 1;
int sum1_2 = (n-1) - sum1_1;
int sum2_1 = Math.min(rQueen,n+1-cQueen)-1;
int sum2_2 = (n-1)-Math.abs(n+1-cQueen-rQueen) - sum2_1;
int sum3_1 = n-cQueen;
int sum3_2 = (n-1) - sum3_1;
int sum4_1 = Math.min(rQueen,cQueen)-1;
int sum4_2 = (n-1)-Math.max(cQueen,rQueen)+Math.min(cQueen,rQueen) - sum4_1;
for(int a0 = 0; a0 < k; a0++){
int rObstacle = in.nextInt();
int cObstacle = in.nextInt();
if(cObstacle == cQueen && rObstacle<rQueen && (rQueen-rObstacle-1)<sum1_1)
sum1_1 = rQueen-rObstacle-1;
else if(cObstacle == cQueen && rObstacle>rQueen && (rObstacle-rQueen-1)<sum1_2)
sum1_2 = rObstacle-rQueen-1;
else if(rQueen+cQueen == rObstacle+cObstacle && cObstacle>cQueen && (cObstacle-cQueen-1)<sum2_1)
sum2_1 = cObstacle-cQueen-1;
else if(rQueen+cQueen == rObstacle+cObstacle && cObstacle<cQueen && (-cObstacle+cQueen-1)<sum2_2)
sum2_2 = cQueen - cObstacle - 1;
else if(rObstacle == rQueen && cObstacle>cQueen && (cObstacle-cQueen-1)<sum3_1)
sum3_1 = cObstacle-cQueen-1;
else if(rObstacle == rQueen && cObstacle<cQueen && (cQueen-cObstacle-1)<sum3_2)
sum3_2 = cQueen-cObstacle-1;
else if(rQueen-rObstacle == cQueen-cObstacle){
if(rObstacle<rQueen && (rQueen-rObstacle-1)<sum4_1)
sum4_1 = rQueen-rObstacle-1;
if(rObstacle>rQueen && (-rQueen+rObstacle-1)<sum4_2)
sum4_2 = -rQueen+rObstacle-1;
}
}
int sum = sum1_1+sum1_2+sum2_1+sum2_2+sum3_1+sum3_2+sum4_1+sum4_2;
System.out.println(sum);
}
}