[シミュレーション]時計

時計

タイトル説明

WLSは、特定の時間に、時計、現在のウォッチポイントを持っています。
WLSは(再生するためには必要ありません)これらの時間の再生に見たいいくつかの非常に重要な瞬間があります。私たちは、秒針を時計回りに回転させることができ、反時計回りに回転が秒針、分、時間の手がルールによって秒針を回転しますすることができ、WLSは、秒針の回転角度少なくともたびに少なくとも一度訪問されるかを知りたいです。
秒針のクロック時間に分針の組み合わせは、二つの異なる時間を表すことができることに留意されたいです。

 

エントリー

最初の行は整数nは、アクセスする時間の数を表します。
第二ライン三つの整数の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 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/Osea/p/11569260.html