奥深き競技プログラミングの世界 〜 第2問・出題編 〜

さて勝手に始めている競技プログラミングシリーズの出題編第2問
前回の「携帯文字入力」はきっと殆どの人が簡単に感じただろうが今回の「宝の地図集め」は解法も様々でより楽しんで頂けると思う

第2問 「宝の地図集め」 Lv. ★★
————————————————————
N枚に分割された宝の地図があり、それぞれの断片を持つ継承者たちがN人います。

竜王が復活するといわれている一ヶ月後までのできるだけ早い時期に、宝を掘り起こして戦いの準備をせねばなりません。

宝の地図はその呪いにより継承者以外が触ると燃えて灰になってしまうため、継承者が直接会って手渡しで一箇所に集める必要があります。

しかし継承者たちは仕事で忙しく、なかなか全員同時に集まることができません。

そこで全員同時に集まるのはあきらめ、何人かの継承者が都合がよい日付があればそのうちのだれかひとりに地図を預け、それを繰り返すことで一箇所に集めることにしました。

それぞれの継承者に対するスケジュールの空いている日のリストを入力として、何日に地図を集めることができるかを出力するプログラムを書いてください。

入力はN行あり(1 <= N <= 50)それぞれの行が各継承者のスケジュールで、何日が空いているかがスペース区切りで列挙されています(1 <= 日付 <= 30)。
日付は必ず若い順に並んでいます。

もし30日以内に地図を集められるなら何日に集められるかを、集められない場合は-1を出力してください。

・入力
1
2 3
1 2
3 4 5

・出力
3

※ 入力には標準入力、出力には標準出力を用いてください。
————————————————————

このようにまずは出題編のみを4問分まとめて書いていこうと思う

前回の問題は多くの人が同じようなアルゴリズムになったと思うが今回の問題は人によってコード量や実行速度が大幅に異なるだろう
そうはいっても実際に手を動かすと思った以上に簡単だと思うので頭の体操という感覚でより良いアルゴリズムを考えてみて頂きたい