AtCoder practice contest B - Interactive Sorting
https://atcoder.jp/contests/practice/
https://atcoder.jp/contests/practice/tasks/practice_2(ログインして参加登録していないと見れないようです)
この問題を試していて、下のようなコードを書きましたが、REになってしまいます。
(追記) 全てのテストケースでREになります
自環境で試しても問題なく、原因がわかりません。
解決法と、なぜREになってしまうのか教えてほしいです。
###REになるソースコード
Java
1import java.io.PrintStream; 2import java.util.ArrayList; 3import java.util.Scanner; 4 5public class Main { 6 static PrintStream o = System.out; 7 static Scanner sc = new Scanner(System.in); 8 static char[] chars; 9 10 private static boolean query(int from, int compare) { //fromが大きければtrue 11 o.println("? "+chars[from]+" "+chars[compare]); 12 if (sc.nextLine().equals(">")) { 13 return true; 14 } else { 15 return false; 16 } 17 } 18 19 public static void main(String[] args) { 20 short amount = sc.nextShort(); 21 sc.nextLine(); 22 chars = new char[amount]; 23 for (int i = 0; i < amount; i++) { 24 chars[i] = (char) ('A' + i); 25 } 26 ArrayList<Integer> res = new ArrayList<Integer>(amount); 27 for (int i = 0; i < amount; i++) { // iはA=0,B=1,C=2... 28 int min = 0; //resのインデックスの最小値 29 int max = i; //resのインデックスの最大値 30 while (true) { 31 if (min == max) { 32 res.add(min, i); 33 break; 34 } 35 int compareTo = min + ((max-min) / 2); 36 if (query(i, res.get(compareTo))) { 37 min = compareTo+1; 38 } else { 39 max = compareTo; 40 } 41 } 42 } 43 String result = "! "; 44 for (Integer integer : res) { 45 result += chars[integer]; 46 } 47 o.println(result); 48 } 49}
テストと開発に使った自環境
Eclipse IDE for Java Developers 2020-06 (4.16.0)
Java 11.0.8
openjdk version "11.0.8"
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/05 12:47
2020/09/05 13:26
2020/09/05 16:10