説明
時針と分針:両手でのアナログ時計があります。両手は角度を形成します。角度は、両手の間の最小角度として測定されます。両手の間の角度は、0以上かつ未満又は180度に等しい尺度を有します。
MM、hhは2つの完全な時間を表す数字(00 <= HH <= 23)、mmは分を表す2桁の数字(00 <= MM <= 59)、あなたされている:フォーマットHHで記述された5つの別個の時間のシーケンス所与中央値を見つけるプログラムを書くことであり、それは、それらの関連する角度の非減少順にソートされた時間の順序の3番目の要素です。ネクタイは早い時間が遅い時間の前に、このような方法で分割されます。
たとえば、あなたが時間のシーケンス(6:05、7時10分、3時、21時00分、12時55分)に与えられているとします。ソート順序は(12:55、3時、21時00分、6時05分、7時10分)ですので、あなたは21時00分を報告しています。
MM、hhは2つの完全な時間を表す数字(00 <= HH <= 23)、mmは分を表す2桁の数字(00 <= MM <= 59)、あなたされている:フォーマットHHで記述された5つの別個の時間のシーケンス所与中央値を見つけるプログラムを書くことであり、それは、それらの関連する角度の非減少順にソートされた時間の順序の3番目の要素です。ネクタイは早い時間が遅い時間の前に、このような方法で分割されます。
たとえば、あなたが時間のシーケンス(6:05、7時10分、3時、21時00分、12時55分)に与えられているとします。ソート順序は(12:55、3時、21時00分、6時05分、7時10分)ですので、あなたは21時00分を報告しています。
入力
入力は、Tテストケースから構成されています。テストケースの数(T)は、入力ファイルの最初の行に与えられています。各テストケースは、単一の時間がフォーマットHHに与えられている5つの別個の時間のシーケンスを含む行、に与えられる:MMおよび単一スペースによって分離されています。
出力
各テストケースのために、正確に1行を印刷します。与えられた時間のMM:行の形式は、HHで中央値が含まれていることです。以下に、3つのテストケースのためのサンプル入力及び出力を示します。
サンプル入力
3 0時00分1時午前2時00分3時午前4時00分 6時05分午前7時10午前3時21時00分12時55分 午後1時05分午後02時05 15時05 11時05分12時05分
サンプル出力
2時00 午後9時 14:05
ソース
アイデア:式を知って初めて:(角度)= | H * 30 - メートル* 5.5 |
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 #defineは長い長いっ の#define EPS 1E-9 のconst int型 INF = 0x3f3f3f3f 。 const int型 MOD = 1E9 + 7 。 const int型 MAXN = 8000 + 8 。int型のトン。構造体ノード { int型のH、M。 二重の角度; ノード():角度(0 ){} } TI [ 8 ]。ブールCMP(ノードA、ノードB) { 場合(a.angle == b.angle) リターンああ< BH。 それ以外の 場合(a.angle == b.angle &&ああ== BH) 戻り午前< BM。 返す a.angle < b.angle。 } int型のmain() { 用(CIN >> T; t-- ;) { ため(int型 I = 0 ; iが< 5 ; iが++ ) { scanf関数(" %のDた:%d "、&TI [I]・H、 &TI [I] .M)。 TI [I] .angle =ファブ((TI [I]・H%12)*30 - 5.5 *(TI [I] .M%60 ))。 一方、(TI [I] .angle> 180)TI [I] .angle =ファブ(360 - TI [I] .angle)。 } ソート(TI、TI + 5 、CMP)。 もし(TI [ 2 ]・H < 10 ) のprintf(" 0%D:"、TI [ 2 ]・H)。 他 のprintf(" %のD:"、TI [ 2 ]・H)。 もし(TI [ 2 ] .M < 10) のprintf(" 0%Dを\ n "、TI [ 2 ] .M)。 他 のprintf(" %d個の\ n "、TI [ 2 ] .M)。 } 戻り 0 。 }