转载 sort函数解hdu 1209

转载
原文:thanks
http://hi.baidu.com/qiaolw/blog/item/c08b245a4a737bca9d820433.html
题目大意是求时针与分针的角度,并输出中间那个的时间。

时针与分针的求法:

double ha=(h+m/60.0)*30;   (如果h大于12,h=h-12)

double ma=6.0*m;

double angle=abs(ha-ma);

angle=angle>180?360-angle:angle;

 

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
struct In{
    int h,m;
    double angle;
}r[10];
bool cmp(In a,In b)
{
    if(a.angle!=b.angle)
    return a.angle<b.angle;
    else
    return a.h<b.h;
}
int main()
{
    freopen("in.txt","r",stdin);
    int T;
    scanf("%d",&T);
    while(T--){
        for(int i=0;i<5;++i){
            scanf("%d:%d",&r[i].h,&r[i].m);
            double H=r[i].h;
            if(r[i].h>12)
            H=r[i].h-12;
            double ha=(H+(double)r[i].m/60.0)*30;
            double ma=6.0*r[i].m;
            double ret=abs(ha-ma);
            ret=ret>180?360-ret:ret;
            r[i].angle=ret;
        }
        sort(r,r+5,cmp);
        printf("%02d:%02d\n",r[2].h,r[2].m);
    }
    return 0;
}

posted on 2011-04-10 21:23  more think, more gains  阅读(193)  评论(0编辑  收藏  举报

导航