結果

問題 No.240 ナイト散歩
ユーザー threepipes_s
提出日時 2015-07-10 22:38:46
言語 Java8
(openjdk 1.8.0.222)
結果
AC  
実行時間 88 ms
コード長 3,896 Byte
コンパイル時間 1,863 ms
使用メモリ 19,304 KB
最終ジャッジ日時 2019-10-06 00:35:19

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
99_challenge01.txt AC 83 ms
19,296 KB
99_challenge02.txt AC 84 ms
19,296 KB
challenge01.txt AC 85 ms
19,296 KB
challenge02.txt AC 88 ms
19,300 KB
sample1.txt AC 83 ms
19,276 KB
sample2.txt AC 85 ms
19,296 KB
sample3.txt AC 85 ms
19,300 KB
sample4.txt AC 83 ms
19,268 KB
system_test1.txt AC 81 ms
19,296 KB
system_test2.txt AC 81 ms
19,300 KB
system_test3.txt AC 81 ms
19,300 KB
system_test4.txt AC 84 ms
19,296 KB
system_test5.txt AC 81 ms
19,304 KB
system_test6.txt AC 82 ms
19,300 KB
system_test7.txt AC 83 ms
19,300 KB
system_test8.txt AC 85 ms
19,296 KB
system_test9.txt AC 82 ms
19,300 KB
system_test10.txt AC 83 ms
19,296 KB
test1.txt AC 87 ms
19,284 KB
test2.txt AC 82 ms
19,288 KB
test3.txt AC 84 ms
19,296 KB
test4.txt AC 85 ms
19,296 KB
test5.txt AC 86 ms
19,288 KB
test6.txt AC 79 ms
19,284 KB
test7.txt AC 82 ms
19,284 KB
test8.txt AC 85 ms
19,292 KB
test9.txt AC 80 ms
19,296 KB
test10.txt AC 82 ms
19,296 KB
test11.txt AC 83 ms
19,296 KB
test12.txt AC 85 ms
19,296 KB
test13.txt AC 84 ms
19,300 KB
test14.txt AC 81 ms
19,300 KB
test15.txt AC 82 ms
19,300 KB
test16.txt AC 86 ms
19,300 KB
テストケース一括ダウンロード

ソースコード

diff #
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;

public class Main {
	static HashSet<String> set = new HashSet<String>();
	public static void main(String[] args) throws NumberFormatException,
	IOException {
		Solve solve = new Solve();
		solve.solve();
	}
}
class Solve{
	ContestScanner in;
	Solve() throws FileNotFoundException{
		in = new ContestScanner();
	}
	
	final static int[] dx = {-2, -2, -1, -1, 1, 1, 2, 2};
	final static int[] dy = {-1, 1, -2, 2, -2, 2, -1, 1};
	void solve() throws IOException{
		int gx = in.nextInt();
		int gy = in.nextInt();
		final int d = dx.length;
		HashSet<Pos> set = new HashSet<>();
		Queue<Pos> qu = new LinkedList<>();
		qu.add(new Pos(0, 0, 0));
		while(!qu.isEmpty()){
			Pos p = qu.poll();
			if(set.contains(p)) continue;
			if(p.x == gx && p.y == gy){
				System.out.println("YES");
				return;
			}
			if(p.turn==3) continue;
			set.add(p);
			for(int i=0; i<d; i++){
				qu.add(new Pos(p.x+dx[i], p.y+dy[i], p.turn+1));
			}
		}
		System.out.println("NO");
		return;
	}
}

class Pos{
	int x, y, turn;
	long id;
	Pos(int x, int y, int turn){
		this.x = x;
		this.y = y;
		this.turn = turn;
	}
	
	@Override
	public boolean equals(Object obj) {
		return x==((Pos)obj).x && y==((Pos)obj).y;
	}
	
	@Override
	public int hashCode() {
		return (int)(((long)y*(long)1e9+x)%1000000007);
	}
}

class Timer{
	long time;
	public void set(){
		time = System.currentTimeMillis();
	}
	
	public long stop(){
		return System.currentTimeMillis()-time;
	}
}

class Node{
	int id;
	ArrayList<Node> edge = new ArrayList<Node>();
	ArrayList<Integer> sp = new ArrayList<Integer>();
	public Node(int id) {
		this.id = id;
	}
	public void createEdge(Node node, int sp) {
		edge.add(node);
		this.sp.add(sp);
	}
}

class MyComp implements Comparator<int[]> {
	final int idx;
	public MyComp(int idx){
		this.idx = idx;
	}
	public int compare(int[] a, int[] b) {
		return a[idx] - b[idx];
	}
}

class Reverse implements Comparator<Integer> {
	public int compare(Integer arg0, Integer arg1) {
		return arg1 - arg0;
	}
}


class ContestWriter {
	private PrintWriter out;

	public ContestWriter(String filename) throws IOException {
		out = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
	}

	public ContestWriter() throws IOException {
		out = new PrintWriter(System.out);
	}

	public void println(String str) {
		out.println(str);
	}
	
	public void println(Object obj) {
		out.println(obj);
	}

	public void print(String str) {
		out.print(str);
	}
	
	public void print(Object obj) {
		out.print(obj);
	}

	public void close() {
		out.close();
	}
}

class ContestScanner {
	private BufferedReader reader;
	private String[] line;
	private int idx;

	public ContestScanner() throws FileNotFoundException {
		reader = new BufferedReader(new InputStreamReader(System.in));
	}

	public ContestScanner(String filename) throws FileNotFoundException {
		reader = new BufferedReader(new InputStreamReader(new FileInputStream(
				filename)));
	}

	public String nextToken() throws IOException {
		if (line == null || line.length <= idx) {
			line = reader.readLine().trim().split(" ");
			idx = 0;
		}
		return line[idx++];
	}
	
	public String readLine() throws IOException{
		return reader.readLine();
	}

	public long nextLong() throws IOException, NumberFormatException {
		return Long.parseLong(nextToken());
	}

	public int nextInt() throws NumberFormatException, IOException {
		return (int) nextLong();
	}

	public double nextDouble() throws NumberFormatException, IOException {
		return Double.parseDouble(nextToken());
	}
}
0