質問編集履歴

1 REの内容を追記

ozraru

ozraru score 146

2020/09/05 21:46  投稿

AtCoderの例題でREになる
AtCoder practice contest B - Interactive Sorting
[https://atcoder.jp/contests/practice/](https://atcoder.jp/contests/practice/)
[https://atcoder.jp/contests/practice/tasks/practice_2](https://atcoder.jp/contests/practice/tasks/practice_2)(ログインして参加登録していないと見れないようです)
この問題を試していて、下のようなコードを書きましたが、REになってしまいます。
 
(追記) 全てのテストケースでREになります  
自環境で試しても問題なく、原因がわかりません。
解決法と、なぜREになってしまうのか教えてほしいです。
###REになるソースコード
```Java
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
   static PrintStream o = System.out;
   static Scanner sc = new Scanner(System.in);
   static char[] chars;
   
   private static boolean query(int from, int compare) { //fromが大きければtrue
       o.println("? "+chars[from]+" "+chars[compare]);
       if (sc.nextLine().equals(">")) {
           return true;
       } else {
           return false;
       }
   }
   public static void main(String[] args) {
       short amount = sc.nextShort();
       sc.nextLine();
       chars = new char[amount];
       for (int i = 0; i < amount; i++) {
           chars[i] = (char) ('A' + i);
       }
       ArrayList<Integer> res = new ArrayList<Integer>(amount);
       for (int i = 0; i < amount; i++) { // iはA=0,B=1,C=2...
           int min = 0; //resのインデックスの最小値
           int max = i; //resのインデックスの最大値
           while (true) {
               if (min == max) {
                   res.add(min, i);
                   break;
               }
               int compareTo = min + ((max-min) / 2);
               if (query(i, res.get(compareTo))) {
                   min = compareTo+1;
               } else {
                   max = compareTo;
               }
           }
       }
       String result = "! ";
       for (Integer integer : res) {
           result += chars[integer];
       }
       o.println(result);
   }
}
```
### テストと開発に使った自環境
Eclipse IDE for Java Developers 2020-06 (4.16.0)
Java 11.0.8
openjdk version "11.0.8"
  • Java

    25055 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る