結果

問題 No.467 隠されていたゲーム
ユーザー shinwisteriashinwisteria
提出日時 2017-03-24 18:38:35
言語 Java21
(openjdk 21)
結果
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
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 109 ms
41,188 KB
testcase_01 AC 100 ms
41,268 KB
testcase_02 AC 109 ms
41,468 KB
testcase_03 AC 106 ms
41,384 KB
testcase_04 AC 108 ms
41,340 KB
testcase_05 AC 105 ms
41,192 KB
testcase_06 AC 105 ms
41,172 KB
testcase_07 AC 108 ms
41,216 KB
testcase_08 AC 99 ms
40,288 KB
testcase_09 AC 110 ms
41,416 KB
testcase_10 AC 98 ms
41,456 KB
testcase_11 AC 99 ms
40,412 KB
testcase_12 WA -
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 TLE -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
testcase_26 -- -
権限があれば一括ダウンロードができます

ソースコード

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