fork(6) download
  1. #include <iostream>
  2. void addHour(char[]);
  3. bool isTheSame(char[]);
  4. int main()
  5. {
  6. int amount;
  7. std::cin>>amount;
  8. while(amount--)
  9. {
  10. char hour[6];
  11. hour[5]=0;
  12. for(int i=0;i<5;i++)std::cin>>hour[i];
  13. do
  14. {
  15. addHour(hour);
  16. }while(isTheSame(hour)==false);
  17. std::cout<<hour<<std::endl;
  18. }
  19. return 0;
  20. }
  21.  
  22. void addHour(char hour[])
  23. {
  24. if(hour[4]%48<9)hour[4]=(int)hour[4]+1;
  25. else if(hour[3]%48<5){hour[4]='0';hour[3]=(int)hour[3]+1;}
  26. else if((hour[0]=='2' && hour[1]%48<3) || (hour[0]=='1' && hour[1]%48<9) ){hour[4]=hour[3]='0';hour[1]=(int)hour[1]+1;}
  27. else if(hour[0]%48<2){hour[4]=hour[3]=hour[1]='0';hour[0]=(int)hour[0]+1;}
  28. else for(int i=0;i<5;i++)i==2 ? hour[i]=':' : hour[i]='0';
  29. }
  30.  
  31. bool isTheSame(char hour[])
  32. {
  33. std::string tag1="",tag2="";
  34. for(int i=0;i<5;++i)tag1+=hour[i];
  35. for(unsigned int i=0;i<tag1.length();){if(tag1[i]=='0' || (tag1[i]==':' && i==0))tag1.erase(i,i+1);else ++i;}
  36. for(int i=tag1.length()-1;i>=0;--i)tag2+=tag1[i];
  37. if(tag1!=tag2)return false;
  38. return true;
  39. }
  40.  
Success #stdin #stdout 0s 16064KB
stdin
4
00:00
23:30
14:59
23:58
stdout
00:01
23:32
15:51
00:00