結果

問題 No.240 ナイト散歩
ユーザー threepipes_s
提出日時 2015-07-10 22:38:46
言語 Java11
(openjdk 11.0.5)
結果
AC  
実行時間 84 ms
コード長 3,896 Byte
コンパイル時間 2,516 ms
使用メモリ 31,364 KB
最終ジャッジ日時 2020-02-19 10:43:33

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
99_challenge01.txt AC 75 ms
31,128 KB
99_challenge02.txt AC 75 ms
30,928 KB
challenge01.txt AC 74 ms
30,972 KB
challenge02.txt AC 74 ms
31,228 KB
sample1.txt AC 74 ms
30,868 KB
sample2.txt AC 81 ms
31,264 KB
sample3.txt AC 84 ms
31,008 KB
sample4.txt AC 78 ms
31,308 KB
system_test1.txt AC 76 ms
30,928 KB
system_test2.txt AC 78 ms
30,932 KB
system_test3.txt AC 76 ms
30,944 KB
system_test4.txt AC 75 ms
30,872 KB
system_test5.txt AC 76 ms
30,936 KB
system_test6.txt AC 75 ms
30,900 KB
system_test7.txt AC 75 ms
30,868 KB
system_test8.txt AC 75 ms
31,304 KB
system_test9.txt AC 76 ms
31,228 KB
system_test10.txt AC 75 ms
31,112 KB
test1.txt AC 79 ms
31,124 KB
test2.txt AC 78 ms
30,992 KB
test3.txt AC 75 ms
31,104 KB
test4.txt AC 74 ms
31,044 KB
test5.txt AC 74 ms
30,996 KB
test6.txt AC 72 ms
31,004 KB
test7.txt AC 74 ms
31,212 KB
test8.txt AC 78 ms
31,364 KB
test9.txt AC 77 ms
31,224 KB
test10.txt AC 77 ms
31,224 KB
test11.txt AC 77 ms
31,020 KB
test12.txt AC 77 ms
30,936 KB
test13.txt AC 78 ms
31,012 KB
test14.txt AC 77 ms
30,872 KB
test15.txt AC 77 ms
30,864 KB
test16.txt AC 78 ms
30,988 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