Time Limit: 2 sec / Memory Limit: 256 MB
問題文
アンドウくんは、 N 個のスクリプトを実行し、実行開始時刻と実行終了時刻を記録しました。
しかしこの日、アンドウくんの時計は 1000 ミリ秒巻き戻るという事象が一度発生しました。
もしかすると、スクリプトの実行時間がわからなくなってしまったかもしれません。
実行開始時刻と実行終了時刻のリストが与えられるので、各スクリプトの実行時間を計算し、ミリ秒単位で出力してください。
ただし、以下の点に注意してください。
- 実行時間が一意に定まらないスクリプトに対しては
-1
を出力してください。 - スクリプトの実行時間はいずれも 1 ミリ秒以上でした。
- 巻き戻りは瞬間的な事象であり、巻き戻りにかかる時間は 0 ミリ秒です。
- 実行開始時刻と実行終了時刻について丸めは起こらないものとし、実行開始時刻と実行終了時刻のミリ秒未満の位の値はすべて 0 であるとします。
つまり、実行開始時刻および実行終了時刻をミリ秒単位で表した値 t に関して、 t は整数であることが分かっています。
- 巻き戻りの発生時刻のミリ秒未満の値は 0 ではありません。
つまり、巻き戻りの発生時刻をミリ秒単位で表した値 r に関して、 r は整数でないことが分かっています。
よって、巻き戻りの発生時刻は、実行開始時刻および実行終了時刻と同時刻ではありません。 - 夏時間はありません。
入力
入力は以下の形式で標準入力から与えられる。
N S_1 E_1 : S_N E_N
- スクリプトの数 N ( 1 \leq{} N \leq{} 100 ) が 1 行で与えられる。
- 続く N 行には各スクリプトの実行の開始時刻 S_i と終了時刻 E_i が空白区切りで与えられる。
-
S_i, E_i の形式は、
HH:MM:SS.mmm
である。ただし、H
,M
,S
,m
は数字 1 文字を表す。
また、21
{}\leq{}HH
\leq22
,00
{}\leq{}MM
\leq59
,00
{}\leq{}SS
\leq59
,000
{}\leq{}mmm
\leq999
である。 - 2 回以上巻き戻りが発生するといった、問題の条件を満たさない入力は与えられない。
出力
スクリプトの実行時間をミリ秒単位で N 行に出力せよ。
ただし、実行時間が一意に定まらないスクリプトに対しては-1
を出力せよ。
出力の末尾に改行を入れること。
配点
この問題には部分点が設定されていない。全てのテストケースに正解した場合は、 50 点が与えられる。
入力例1
1 21:00:01.500 21:00:01.000
出力例1
500
スクリプトの終了時刻が開始時刻より前になっているので、実行中に巻き戻りが発生したことが分かります。
入力例2
1 22:00:00.000 22:00:03.000
出力例2
-1
スクリプトの実行中に巻き戻りが発生したかどうか特定できません。
発生していた場合は 4000 ミリ秒、発生していなかった場合は 3000 ミリ秒になります。
入力例3
3 21:00:00.000 21:00:03.000 21:00:01.500 21:00:01.000 21:00:02.000 21:00:02.500
出力例3
4000 500 500
2 つ目のスクリプトから、巻き戻り前の時間軸で21:00:01.500
より後、21:00:02.000
より前に巻き戻ったことが分かります。
入力例4
3 21:00:00.000 21:00:03.000 21:00:01.500 21:00:01.000 21:00:00.500 21:00:01.000
出力例4
4000 500 -1
入力例3と同様に、 2 つ目のスクリプトから、巻き戻り前の時間軸で21:00:01.500
より後、21:00:02.000
より前に巻き戻ったことが分かります。
しかし、3つ目のスクリプトの終了時刻が、巻き戻り前の時間軸での記述なのか巻き戻った後の記述なのかの判断ができません。