検索メニュー

事前課題

回答方法

エントリー後にお伝えするメールアドレスに、課題の条件を満たすプログラムのソースコードを転記し
プレーンテキストを添付ファイルにて送付してください。その他、以下の条件をご確認ください。

- 利用可能な言語はRuby, Python, Scala, JavaScript, TypeScriptです。詳しいバージョンは
「実行環境」をご参照ください。
- プログラムは各テストケースに対して独立に実行されます。
- ソースコードは単独のファイルである必要があります。
- 標準ライブラリ以外のライブラリに依存する事はできません。
- 不正な入力に対処する必要はありません。

実行環境

お送りいただいたプログラムは、以下の環境で実行いたします。

Ruby: CRuby 2.4.1
Python: CPython 3.6.1
Scala: Scala 2.12.2
JavaScript: Node.js 8.1.3
TypeScript: TypeScript 2.4.1

採点基準

- テストケースの通過率
- コードのわかりやすさ
- 処理速度

ご留意いただく事項

課題の点数はあくまで選考基準の一つです。
ご経歴なども参考にしつつ弊社基準により選考させていただきます。

問題

問題文

N 人の人がいます。各人には 1 〜 N の番号が振られています。
この人達のうち L 人は嘘つきで、残りの N-L 人は正直者です。
正直者は必ず正しい事を言い、嘘つきは必ず間違った事を言います。
全ての i,j (1<=i<=N, 1<=j<=N) について、「 i さんは『 j さんは正直者だ』と言っている」または「 i さんは『 j さんは嘘つきだ』と言っている」という情報が与えられます。
L 人の嘘つきを特定し、その番号を昇順に出力してください。
ただし、 L 人の嘘つきを特定できない場合は Ambiguous と出力してください。
また、与えられた情報に確実に誤りがある(どの L 人が嘘つきだと仮定しても矛盾する)場合は Inconsistent と出力してください。

提出されたコードは複数のテストケースに対して実行され、各テストケースに対する正否で採点されます。

制約

1 <= N <= 500

0 <= L <= N

入力形式

入力は以下の形式で標準入力から与えられます。

  N L
  P_11 P_12 ... P_1N
  P_21 P_22 ... P_2N
  ...
  P_N1 P_N2 ... P_NN
  

ただし、 P_ij は以下の情報を表します

出力形式

標準出力に 1 行で出力してください。

入力例1

  3 2
  1 0 1
  0 1 0
  1 0 1
  

出力例1

  1 3
  

入力例2

  2 1
  1 1
  0 1
  

出力例2

  Inconsistent
  

入力例3

  2 1
  1 0
  0 1
  

出力例3

  Ambiguous