結果

問題 No.467 隠されていたゲーム
ユーザー shinwisteria
提出日時 2017-03-24 18:38:35
言語 Java
(openjdk 23)
結果
WA  
実行時間 -
コード長 1,302 bytes
コンパイル時間 3,157 ms
コンパイル使用メモリ 79,776 KB
実行使用メモリ 41,468 KB
最終ジャッジ日時 2024-07-06 02:07:30
合計ジャッジ時間 8,819 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 9 WA * 6 TLE * 1 -- * 8
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Queue;
import java.util.Scanner;
import java.util.TreeSet;

public class HiddenGame {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int N = s.nextInt();
		int[] d = new int[N];
		for(int i = 0;i < N;i++){
			d[i] = s.nextInt();
		}
		Arrays.sort(d);
		int goalx = s.nextInt(),goaly = s.nextInt();
		s.close();
		
		int goal = Integer.max(Math.abs(goalx), Math.abs(goaly));
		int count = 0;
		if(goal/d[N-1] > 10000000){
			count = goal/d[N-1]-2;
			goal = goal%d[N-1]+2;
		}
		
		TreeSet<Integer> T1 = new TreeSet<>();
		TreeSet<Integer> T2 = new TreeSet<>();
		Queue<Integer> REST = new ArrayDeque<>();
		REST.add(goal);
		
		for(;;){
			int rest = REST.poll();
			if(rest == 0){
				break;
			}else if(rest < d[0]){
				count +=2;
				break;
			}
			T1.clear();
			for(int i : d){
				T1.add(Math.abs(rest-i));
			}
			for(int i:T1){
				for(int j:d){
					T2.add(Math.abs(i-j));
				}
			}
			if(T2.contains(0)){
				count += 2;
				break;
			}else if(T1.contains(0)){
				count += 1;
				break;
			}else if(T1.first() == T2.first()){
				count = -1;
			}
			REST.clear();
			REST.addAll(T1);
			T1 = new TreeSet<Integer>(T2);
			T2.clear();
			count++;
		}
		System.out.println(count);
	}
}
0