時計
タイトル説明
WLSは、特定の時間に、時計、現在のウォッチポイントを持っています。
WLSは(再生するためには必要ありません)これらの時間の再生に見たいいくつかの非常に重要な瞬間があります。私たちは、秒針を時計回りに回転させることができ、反時計回りに回転が秒針、分、時間の手がルールによって秒針を回転しますすることができ、WLSは、秒針の回転角度少なくともたびに少なくとも一度訪問されるかを知りたいです。
秒針のクロック時間に分針の組み合わせは、二つの異なる時間を表すことができることに留意されたいです。
WLSは(再生するためには必要ありません)これらの時間の再生に見たいいくつかの非常に重要な瞬間があります。私たちは、秒針を時計回りに回転させることができ、反時計回りに回転が秒針、分、時間の手がルールによって秒針を回転しますすることができ、WLSは、秒針の回転角度少なくともたびに少なくとも一度訪問されるかを知りたいです。
秒針のクロック時間に分針の組み合わせは、二つの異なる時間を表すことができることに留意されたいです。
エントリー
最初の行は整数nは、アクセスする時間の数を表します。
第二ライン三つの整数のH、Mは、分、秒の現在時刻を表すそれぞれです。
N各行の最後の行は、あなたが分と秒にアクセスするたびに、三つの整数やあ、MI、SIを表します。
1≤n≤86,400
0≤H、ハイ<24
、0≦M、MIザ、S、Siの<60
第二ライン三つの整数のH、Mは、分、秒の現在時刻を表すそれぞれです。
N各行の最後の行は、あなたが分と秒にアクセスするたびに、三つの整数やあ、MI、SIを表します。
1≤n≤86,400
0≤H、ハイ<24
、0≦M、MIザ、S、Siの<60
輸出
出力行は、2番目の数字は回転角度、小数点以下2桁の答えを表しています。
サンプル入力
1
0 1 0
0 1 1
サンプル出力
6.00
[説明]
私はリング上のすべての点として、各瞬間に、3コピーされたこのリングを入れて、リングが3に展開されます。
三つの例:
全て完全に時計回りまたは反時計回りに1、。
2は、最初に反時計回りにダウンし、時計回りに行きます。
図3は、最初に反時計回り、その後、さらに時計回りに行きます。
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 のconst int型 N = 3E5 + 10 。 4 CONST INT M = 43200 。 5 INT [N]、N。 6 INT メイン() 7 { 8 9 // COUT << -1%10 << ENDL。 10 ios_base :: sync_with_stdio(偽); 11 cin.tie(NULL)、cout.tie(NULL)。 12 int型H、MI、S。 13 CIN >> N。 14 CIN >> H >> MI >> S。 15 INT START = H * 3600 + MI * 60 + S。 16 であればスタート(> = Mスタート) - = M。 17 INT M = 0 。 18 19 // coutの<< "####" <<てendl; 20 21 のために(int型 i = 0 ; iがn <I ++は、U、V、W {) 22 CIN >> U >> V >> W。 23 int型 TMP =(uは* 3600 + V * 60 + W)を。 24 もし(TMP> = M)TMP - = M。 25 もし(TMP ==開始)続けます。 26 他{ 27 [mは++] = TMPと、 28 } 29 } 30 31 ソート(A + M)。 32 33 のために(int型 i = 0 ; iがm <; iは++ ){ 34 [iがm +] = [I] + 43200 。 35 [I + 2 * mは] [I] + = 86400を、 36 } 37 であれば(M ==0 ){ 38 // のprintf( "####を\ n"); 39 のprintf(" 0.00 \ n " ); 40 } 他{ 41 のint L = M + 10、Rは、M + = 10 。 42 [スタート] + = 43200 ; 43 // のprintf( "###を\ n"); 44 のためには、(int型 = Iを0 ; iは< 3 * M; iは++ ){ 45 であれば([I] <スタート&&スタート<[I + 1 ]){ 46 、L = I、R = I +1 ; 47 ブレーク; 48 } 49 } 50 // のprintf( "(%d個、%d)は、[L] =%dを、[R] =%Dを\ n"、L、R、[L]、[R] ); 51 52 // のprintf( "%d個、%d個の\ n"、L、R)。 53 INTは T1 =(スタート- [L])> = M?(スタート- [L])を- M:スタート- [L]。 54 int型 T2 =([R] -Start)> = M?([R] -Start) - M:[R] - 起動し、 55 // T1 =(T1 + M)%のM。 56 // T2 =(T2 + M)%のM。 57 // のprintf( "%d個の\ n"、M)。 58 // のprintf( "%D%D \ n"は、T1、T2)。 59 // のprintf( "%D%D \ n"、M - T1、M - T2)。 60 INT ANS =分((M - T1)、(M - T2))。 61 // のprintf( "%D%D -は%d =%dを、%のD -は%d =%d個の\ n"、ANS、スタート、[L]、(スタート- [L])、[R ]、スタート、([R] -Start))。 62 // のprintf( "%d個の\ n"、ANS)。 63 のためには、(int型 I = L; L - M + 1 <I; i-- ){ 64の ANS =分(ANS、(スタート- [I])* 2 + [I + M- 1 ] - スタート) ; 65 } 66 のための(int型 I = Rを、IはR + M < - 1、I ++){ 67 歳=分(年([I] -スタート)* 2 +スタート- [I-M + 1 ])。 68 } 69 年=年* 6 。 70 のprintf(" %d.00 \ nを" 、年); 71 } 72 リターン 0 。 73 }