結果

問題 No.513 宝探し2
ユーザー uafr_cs
提出日時 2017-05-05 23:19:25
言語 Java
(openjdk 23)
結果
RE  
実行時間 -
コード長 2,643 bytes
コンパイル時間 3,463 ms
コンパイル使用メモリ 88,024 KB
実行使用メモリ 72,532 KB
平均クエリ数 74.42
最終ジャッジ日時 2024-07-16 13:25:09
合計ジャッジ時間 5,762 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 7 RE * 5
権限があれば一括ダウンロードができます

ソースコード

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;
						min_dist = next_plus_dist;
					}else{
						y = next_minus_y;
						add = -2;
						min_dist = next_minus_dist;
					}
				}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;
						min_dist = next_dist;
					}else{
						add = 1;
					}
				}
			}
		}
	}
}
0