Karen is getting ready for a new school day!
![](https://i-blog.csdnimg.cn/blog_migrate/fa676644715b5c28f7b60824cc612f49.png)
It is currently hh:mm, given in a 24-hour format. As you know, Karen loves palindromes, and she believes that it is good luck to wake up when the time is a palindrome.
What is the minimum number of minutes she should sleep, such that, when she wakes up, the time is a palindrome?
Remember that a palindrome is a string that reads the same forwards and backwards. For instance, 05:39 is not a palindrome, because 05:39 backwards is 93:50. On the other hand, 05:50 is a palindrome, because 05:50 backwards is 05:50.
The first and only line of input contains a single string in the format hh:mm (00 ≤ hh ≤ 23, 00 ≤ mm ≤ 59).
Output a single integer on a line by itself, the minimum number of minutes she should sleep, such that, when she wakes up, the time is a palindrome.
05:39
11
13:31
0
23:59
1
In the first test case, the minimum number of minutes Karen should sleep for is 11. She can wake up at 05:50, when the time is a palindrome.
In the second test case, Karen can wake up immediately, as the current time, 13:31, is already a palindrome.
In the third test case, the minimum number of minutes Karen should sleep for is 1 minute. She can wake up at 00:00, when the time is a palindrome.
其实回文的情况就那么多,枚举出来一个二分查找就可以了;
#include<bits/stdc++.h>
using namespace std;
int save[30];
int main()
{
save[0]=0;
save[1]=1*60+10;
save[2]=2*60+20;
save[3]=3*60+30;
save[4]=4*60+40;
save[5]=5*60+50;
save[6]=10*60+1;
save[7]=11*60+11;
save[8]=12*60+21;
save[9]=13*60+31;
save[10]=14*60+41;
save[11]=15*60+51;
save[12]=20*60+2;
save[13]=21*60+12;
save[14]=22*60+22;
save[15]=23*60+32;
save[16]=24*60;
int a,b;
while(scanf("%d:%d",&a,&b)!=EOF)
{
int n=lower_bound(save,save+17,a*60+b)-save;
printf("%d\n",save[n]-a*60-b);
}
}