B - stepモード Editorial

Time Limit: 2 sec / Memory Limit: 256 MiB

問題文

アンドウくんは、 NN 個のスクリプトを実行し、実行開始時刻と実行終了時刻を記録しました。
しかしこの日、アンドウくんの時計は 10001000 ミリ秒巻き戻るという事象が一度発生しました。
もしかすると、スクリプトの実行時間がわからなくなってしまったかもしれません。

実行開始時刻と実行終了時刻のリストが与えられるので、各スクリプトの実行時間を計算し、ミリ秒単位で出力してください。
ただし、以下の点に注意してください。

  • 実行時間が一意に定まらないスクリプトに対しては-1を出力してください。
  • スクリプトの実行時間はいずれも 11 ミリ秒以上でした。
  • 巻き戻りは瞬間的な事象であり、巻き戻りにかかる時間は 00 ミリ秒です。
  • 実行開始時刻と実行終了時刻について丸めは起こらないものとし、実行開始時刻と実行終了時刻のミリ秒未満の位の値はすべて 00 であるとします。
    つまり、実行開始時刻および実行終了時刻をミリ秒単位で表した値 tt に関して、 tt は整数であることが分かっています。
  • 巻き戻りの発生時刻のミリ秒未満の値は 00 ではありません。
    つまり、巻き戻りの発生時刻をミリ秒単位で表した値 rr に関して、 rr は整数でないことが分かっています。
    よって、巻き戻りの発生時刻は、実行開始時刻および実行終了時刻と同時刻ではありません。
  • 夏時間はありません。

入力

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

NN
S1S_1 E1E_1
:
SNS_N ENE_N
  • スクリプトの数 NN ( 1N1001 \leq{} N \leq{} 100 ) が 11 行で与えられる。
  • 続く NN 行には各スクリプトの実行の開始時刻 SiS_i と終了時刻 EiE_i が空白区切りで与えられる。
  • SiS_i, EiE_i の形式は、HH:MM:SS.mmmである。ただし、 H, M, S, m は数字 11 文字を表す。
    また、 21{}\leq{}HH\leq 22, 00{}\leq{}MM\leq 59, 00{}\leq{}SS\leq 59, 000{}\leq{}mmm\leq 999 である。
  • 22 回以上巻き戻りが発生するといった、問題の条件を満たさない入力は与えられない。

出力

スクリプトの実行時間をミリ秒単位で NN 行に出力せよ。

ただし、実行時間が一意に定まらないスクリプトに対しては-1を出力せよ。

出力の末尾に改行を入れること。

配点

この問題には部分点が設定されていない。全てのテストケースに正解した場合は、 5050 点が与えられる。


入力例1

Copy
  1. 1
  2. 21:00:01.500 21:00:01.000
1
21:00:01.500 21:00:01.000

出力例1

Copy
  1. 500
500

スクリプトの終了時刻が開始時刻より前になっているので、実行中に巻き戻りが発生したことが分かります。


入力例2

Copy
  1. 1
  2. 22:00:00.000 22:00:03.000
1
22:00:00.000 22:00:03.000

出力例2

Copy
  1. -1
-1

スクリプトの実行中に巻き戻りが発生したかどうか特定できません。

発生していた場合は 40004000 ミリ秒、発生していなかった場合は 30003000 ミリ秒になります。


入力例3

Copy
  1. 3
  2. 21:00:00.000 21:00:03.000
  3. 21:00:01.500 21:00:01.000
  4. 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

Copy
  1. 4000
  2. 500
  3. 500
4000
500
500

22 つ目のスクリプトから、巻き戻り前の時間軸で21:00:01.500より後、21:00:02.000より前に巻き戻ったことが分かります。


入力例4

Copy
  1. 3
  2. 21:00:00.000 21:00:03.000
  3. 21:00:01.500 21:00:01.000
  4. 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

Copy
  1. 4000
  2. 500
  3. -1
4000
500
-1

入力例3と同様に、 22 つ目のスクリプトから、巻き戻り前の時間軸で21:00:01.500より後、21:00:02.000より前に巻き戻ったことが分かります。 しかし、33つ目のスクリプトの終了時刻が、巻き戻り前の時間軸での記述なのか巻き戻った後の記述なのかの判断ができません。



2025-06-18 (Wed)
20:08:55 +00:00