ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

ABC050 C - Lining Up

問題
提出コード
人生初の嘘解法を通しました!!!割と条件を省いて書いたのですが通ってしまったので、サンプルが弱いと思います(ACしない凡例が存在します)。
例えば、自分のコードだと

5  
0 0 0 2 2

という入力で答えが6になります(本来、このような入力の場合答えは0になるはずです)

解法

解法自体は正しいです(のはずです)
報告が正しいかどうかを判定したら、あとは答えが一意に決まります。
報告の判定方法は、

  • Nが偶数
    報告全てが奇数になっていて、報告された数字はすべて2つずつ存在しています。
    また、報告されるべき数字は1,3,5,7...N-1の奇数です。

  • Nが奇数
    報告される数字は偶数になっていて、0を除き報告された数字はすべて2つずつ存在しています。0は1回だけ報告されます。
    報告されるべき数字は0,2,4...N-1です。

上の条件を満たさないときは答えが0、満たすときは
2^{\frac{N}{2}}です(Nが奇数の場合は切り捨てをします)。
これを求めるだけで答えとなります。
正しい報告かどうかの判定をする部分の条件をかなり緩めにしたのですが、ACをしてしまいました。よくないです。