結果

問題 No.513 宝探し2
ユーザー uafr_csuafr_cs
提出日時 2017-05-05 23:18:50
言語 Java21
(openjdk 21)
結果
RE  
実行時間 -
コード長 2,548 bytes
コンパイル時間 4,193 ms
コンパイル使用メモリ 90,584 KB
実行使用メモリ 72,172 KB
平均クエリ数 78.17
最終ジャッジ日時 2024-07-16 13:24:56
合計ジャッジ時間 8,324 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 160 ms
58,856 KB
testcase_01 RE -
testcase_02 RE -
testcase_03 AC 194 ms
59,020 KB
testcase_04 RE -
testcase_05 AC 186 ms
58,700 KB
testcase_06 RE -
testcase_07 RE -
testcase_08 AC 148 ms
58,704 KB
testcase_09 AC 190 ms
59,464 KB
testcase_10 RE -
testcase_11 RE -
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {
	
	public static int RANGE = 100;
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int y = 0, x = 0;
		System.out.println(x + " " + y);
		int min_dist = sc.nextInt();
		if(min_dist == 0){ return; }
		
		
		{
			int add = 1;
			while(true){
				if(add == 1){
					final int next_plus_x = x + add;
					final int next_minus_x = x - add;
					final int next_y = y;
					
					System.out.println(next_plus_x + " " + next_y);
					final int next_plus_dist = sc.nextInt();
					if(next_plus_dist == 0){ return; }
					
					System.out.println(next_minus_x + " " + next_y);
					final int next_minus_dist = sc.nextInt();
					if(next_minus_dist == 0){ return; }
					
					if(min_dist < Math.min(next_plus_dist, next_minus_dist)){ break; }
					
					if(next_plus_dist < next_minus_dist){
						x = next_plus_x;
						add = 2;
						min_dist = next_plus_dist;
					}else{
						x = next_minus_x;
						add = -2;
						min_dist = next_minus_dist;
					}
				}else{
					final int next_x = x + add;
					final int next_y = y;
					
					System.out.println(next_x + " " + next_y);
					final int next_dist = sc.nextInt();
					if(next_dist == 0){ return; }
					
					if(next_dist < min_dist){
						x = next_x;
						add *= 2;
						min_dist = next_dist;
					}else{
						add = 1;
					}
				}
			}
		}
		
		{
			int add = 1;
			while(true){
				if(add == 1){
					final int next_x = x;
					final int next_plus_y = y + add;
					final int next_minus_y = y - add;
					
					System.out.println(next_x + " " + next_plus_y);
					final int next_plus_dist = sc.nextInt();
					if(next_plus_dist == 0){ return; }
					
					System.out.println(next_x + " " + next_minus_y);
					final int next_minus_dist = sc.nextInt();
					if(next_minus_dist == 0){ return; }
					
					if(min_dist < Math.min(next_plus_dist, next_minus_dist)){ break; }
					
					if(next_plus_dist < next_minus_dist){
						y = next_plus_y;
						add = 2;
					}else{
						y = next_minus_y;
						add = -2;
					}
				}else{
					final int next_x = x;
					final int next_y = y + add;
					
					System.out.println(next_x + " " + next_y);
					final int next_dist = sc.nextInt();
					if(next_dist == 0){ return; }
					
					if(next_dist < min_dist){
						y = next_y;
						add *= 2;
					}else{
						add = 1;
					}
				}
			}
		}
	}
}
0