Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package knightguard;
- import java.util.ArrayList;
- import java.util.HashSet;
- import java.util.Scanner;
- import java.util.Set;
- public class KnightGuard {
- static class Position {
- int x;
- int y;
- public Position(int x, int y) {
- this.x = x;
- this.y = y;
- }
- public boolean equals(Position p) {
- if (p.x == x && p.y == y) {
- return true;
- }
- return false;
- }
- @Override
- public String toString() {
- return x + "," + y;
- }
- }
- ArrayList<Position> knightPositions;
- int size;
- int no_of_knights;
- public KnightGuard(int size, int k, ArrayList<Position> knightPositions) {
- this.knightPositions = knightPositions;
- no_of_knights = k;
- this.size = size;
- }
- public int getSafePositions() {
- Set<Position> safePos = new HashSet<>();
- for (Position p : knightPositions) {
- if (isValid(p.x - 2, p.y - 1)) {
- safePos.add(new Position(p.x - 2, p.y - 1));
- }
- if (isValid(p.x - 2, p.y + 1)) {
- safePos.add(new Position(p.x - 2, p.y + 1));
- }
- if (isValid(p.x + 2, p.y - 1)) {
- safePos.add(new Position(p.x + 2, p.y - 1));
- }
- if (isValid(p.x + 2, p.y + 1)) {
- safePos.add(new Position(p.x + 2, p.y + 1));
- }
- if (isValid(p.x - 1, p.y - 2)) {
- safePos.add(new Position(p.x - 1, p.y - 2));
- }
- if (isValid(p.x - 1, p.y + 2)) {
- safePos.add(new Position(p.x - 1, p.y + 2));
- }
- if (isValid(p.x + 1, p.y - 2)) {
- safePos.add(new Position(p.x + 1, p.y - 2));
- }
- if (isValid(p.x + 1, p.y + 2)) {
- safePos.add(new Position(p.x + 1, p.y + 2));
- }
- }
- return safePos.size();
- }
- private boolean isValid(int x, int y) {
- if (x < 0 || x >= size || y < 0 || y >= size) {
- return false;
- }
- if (knightPositions.contains(new Position(x, y))) {
- return false;
- }
- return true;
- }
- public static void main(String[] args) {
- Scanner s = new Scanner(System.in);
- int size = s.nextInt();
- int knights = s.nextInt();
- ArrayList<Position> knightPos = new ArrayList<>();
- for (int i = 0; i < knights; i++) {
- int x = s.next().charAt(0) - 'a';
- int y = s.nextInt() - 1;
- knightPos.add(new Position(x, y));
- }
- KnightGuard knightGuard = new KnightGuard(size, knights, knightPos);
- System.out.println(knightGuard.getSafePositions());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement