ページ

2012/06/08

[競技プログラミング][C言語][AtCoder][ふか杯]すべては1になる

B - すべては1になる

時間制限 : 2sec / スタック制限 : 8MB / メモリ制限 : 64MB

Description

O氏は長い間ずっと大学に閉じ込められていたが,
自分の後継となる者Fを見つけ後の事を全てそのFにたくし,n年の時を経て外の世界に旅立つことにした.(0は自然数)

大学から外の世界に出るためには,まず大学を卒業しなければならない.
なんと,O氏はこの事を事前に想定し,一定時間がたつと自動的に
O氏が卒業したことにするプログラムを大学のコンピュータに埋め込んでいたのだ.
しかし,仕込んだ日時は記録しているのだが
プログラムを仕込んだのがずいぶん昔なため卒業する正確な時刻を忘れてしまった.
仕込んだプログラムを見てみると,仕込んだ時刻から2進数で111....11秒後に発動する設定になっていた.

O氏は周りの人に不審に思われないように卒業するために,仕込んだプログラムが発動する時刻を計算することにした.

(この問題では,閏秒はないものとして考えること)

Input

入力は複数のテストケースからなる.入力の終わりは1つの0のみを含んだ行で示される.
各テストケースは以下の形式で与えられる.

year/month/day hh:mm:ss
time
1900≦year≦20012
01≦month≦12
01≦day≦31
00≦hh≦23
00≦mm,ss≦59
テストケースの1行目には,年,月,日,時間,分,秒が書かれている.
これらはO氏がプログラムを仕込んだ時刻を表している.
月,日,時間,分,秒は必ず2桁で与えられる.(値が10未満の場合,10の位は0埋めされる)

テストケースの2行目には,1のみから成る文字列timeが書かれている.
これはプログラムが発動するまでの時間を2進数で表したものである.timeの長さは1文字以上30文字以下である.

存在しない日付は与えられないことが保証されている.
テストケースの数は1つのファイルにつき5,000個以下であることが保証されている.

Output

各テストケースに対して,プログラムが発動する時刻を入力と同じ形式で1行に出力せよ.

出典

B: すべては1になる - ふか杯 5th Contest | AtCoder

回答

AtCoder/fuka5_2.cpp at master · wada811/AtCoder · GitHub

とりあえず全部秒に直して発動までの時間を足せばいいじゃないってことで
mktime関数で変換して計算した。
出力がサンプルインプット・アウトプットで間違っていたのになぜか通ったような気がする…。