hdu 1209 Clock(排序)

题意:按钟表的时针、分针的夹角对5个时间进行升序排序,输出第3个时间

思路:排序

注意:若夹角相同,则按时间进行升序排序

#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;

struct node{
    int ti[2];
    double ang;
}a[5];

int cmp(node a,node b){
    if(a.ang!=b.ang)return a.ang<b.ang;
    if(a.ti[0]!=b.ti[0])return a.ti[0]<b.ti[0];
    return a.ti[1]<b.ti[1];
}

int main(){
    int t,i;
    scanf("%d",&t);
    while(t--){
        for(i=0;i<5;++i){
            scanf("%d:%d",&a[i].ti[0],&a[i].ti[1]);
            if(a[i].ti[0]>12)a[i].ang=(a[i].ti[0]-12)*30+a[i].ti[1]*0.5-a[i].ti[1]*6;
            else a[i].ang=a[i].ti[0]*30+a[i].ti[1]*0.5-a[i].ti[1]*6;
            if(a[i].ang<0)a[i].ang=-a[i].ang;
            if(a[i].ang>180)a[i].ang=360-a[i].ang;
        }
        sort(a,a+5,cmp);
        printf("%02d:%02d\n",a[2].ti[0],a[2].ti[1]);
    }
    return 0;
}
View Code

 

posted @ 2015-08-14 11:47  gongpixin  阅读(444)  评论(0编辑  收藏  举报