题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1209
这是个水题,直接计算出角度,在排序,另外在输出的时候注意一下,要不WA。。
代码:
#include <algorithm>
#include <cstdio>
#include <cstdio>
using namespace std;
struct time
{
int h;
int m;
double angle;
}a[10];
int h;
int m;
double angle;
}a[10];
void calculate()
{
for(int i = 0;i < 5;++i)
{
double tm = a[i].m * 6;
int temp = a[i].h % 12;
double th = temp * 30 + tm / 12;
double t = th - tm;
if(t < 0)
t = -t;
if(t > 180)
t = 360 - t;
a[i].angle = t;
}
}
for(int i = 0;i < 5;++i)
{
double tm = a[i].m * 6;
int temp = a[i].h % 12;
double th = temp * 30 + tm / 12;
double t = th - tm;
if(t < 0)
t = -t;
if(t > 180)
t = 360 - t;
a[i].angle = t;
}
}
bool cmp(struct time x,struct time y)
{
if(x.angle != y.angle)
return x.angle < y.angle;
else if(x.h != y.h)
return x.h < y.h;
else if(x.m != y.m)
return x.m < y.m;
}
if(x.angle != y.angle)
return x.angle < y.angle;
else if(x.h != y.h)
return x.h < y.h;
else if(x.m != y.m)
return x.m < y.m;
}
int main()
{
int t;
while(~scanf("%d",&t))
{
while(t--)
{
for(int i = 0;i < 5;++i)
scanf("%d:%d",&a[i].h,&a[i].m);
calculate();
sort(a,a + 5,cmp);
printf("%02d:%02d\n",a[2].h,a[2].m);
}
}
return 0;
}
int t;
while(~scanf("%d",&t))
{
while(t--)
{
for(int i = 0;i < 5;++i)
scanf("%d:%d",&a[i].h,&a[i].m);
calculate();
sort(a,a + 5,cmp);
printf("%02d:%02d\n",a[2].h,a[2].m);
}
}
return 0;
}