题意:
给你一个钟的时间,即给你指针的位置,给你t1时和t2时,让你判断从前到后或者从后到前能不能不碰到指针。
POINT:
把12个刻度之间都增加一个刻度,这样指针如果偏了,就直接当作指在中间。因为判断是从一个正数到另一个正数,所以只要知道有没有偏就行了。
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
#define LL long long
const int maxn = 100100;
int flag[maxn];
int main()
{
int h,m,s,t1,t2;
cin>>h>>m>>s>>t1>>t2;
if(h==12) h=0;
if(t1==12) t1=0;
if(t2==12) t2=0;
if(m!=0||s!=0)
flag[h*2+1]++;
else
flag[h*2]++;
int cnt=m/5;
if(m%5==0&&s==0)
flag[cnt*2]++;
else
flag[cnt*2+1]++;
cnt=s/5;
if(s%5==0)
flag[cnt*2]++;
else
flag[cnt*2+1]++;
t1=t1*2;
t2=t2*2;
if(t1>t2) swap(t1, t2);
int ans=0;
for(int i=t1;i<=t2;i++){
ans+=flag[i];
}
if(ans==0||ans==3){
printf("YES\n");
}
else
printf("NO\n");
}