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