给出5个时间,按时针和分针的角度排序。
若 角度相等。时间小的在前面。
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
struct In{
int hh, mm;
double angle;
}in[8];
bool cmp ( In a, In b ) {
if ( a.angle == b.angle ) {
if ( a.hh == b. hh ) return a.mm > b.mm;
else return a.hh > b.hh;
}
else return a.angle > b.angle;
}
int main ( ) {
int t, minute, hour, i;
char c;
double ang, ang1, ang2;
scanf ( "%d", &t );
while ( t-- ) {
for ( i = 0; i < 5; ++i ) {
scanf ( "%ld%c%ld", &in[i].hh, &c, &in[i].mm );
minute = in[i].mm;
hour = in[i].hh;
if ( in[i].hh >= 12 ) hour -= 12;
ang1 = 30.0 * hour + minute / 2.0;
ang2 = minute * 6.0;
ang = fabs ( ang1 - ang2 );
if ( ang > 180 ) ang = 360.0 - ang;
in[i].angle = ang;
}
sort ( in, in + 5, cmp );
printf ( "%02ld:%02ld\n", in[2].hh, in[2].mm );
}
}