うっかりしないという才能

漫画版: 女子高生プログラマーの大バトル!〜コボール文明の逆襲〜|paizaオンラインハッカソン6

毎度オタクネタや美少女動物園化にウンザリしながらも解いて遊んでるのだが、何かありえないところでハマった。


このコード、どうしても最後のテストにパスしない

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = br.readLine();
        int N = Integer.parseInt(line);

        double x = 0;
        double y = 0;

        for (int i=0;i<N;i++){
            line = br.readLine();
            String[] ns = line.split(" ");
            int t = Integer.parseInt(ns[0]);
            double s = Double.parseDouble(ns[1]);

            switch(t){
            case 1:
                x += s;
                break;
            case 2:
                y += s;
                break;
            case 3:
                x = x-s*x/(x+y);
                y = y-s*y/(x+y);
                break;
            }
        }
        System.out.println((int)(100*y/(x+y)));
    }
}

最終的にcase3でxが書き換わってるのが原因だと気づくのだが、こういうことをしないのも向き不向きの問題なのだろう。

こういうことやってしまって思い出すのは、サッカーの試合観ていて、キーパーに一旦戻したボールをキーパーがトンネルしないことに驚くが、トンネルしない人がトップクラスのキーパーになれるのであって、トンネルしちゃううっかりさんはそこまでに淘汰されているのだろうな、という現象に似ている、と感じた。