题意:按钟表的时针、分针的夹角对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; }
时间: 2024-11-10 07:51:13