fork download
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. string reverse(string s){
  6. string y;
  7. for (int i = 0; !s.empty(); i++){
  8. if (s.back() != '.'){
  9. y.push_back(s.back());
  10. s.pop_back();
  11. }
  12. if (s.back() == '.') s.pop_back();
  13. }
  14. return y;
  15. }
  16.  
  17. bool is_leap(int year){
  18. bool leap;
  19. if ((year % 400) == 0) leap = true;
  20. else if ((year % 100) == 0) leap = false;
  21. else if ((year % 4) == 0) leap = true;
  22. else leap = false;
  23. return leap;
  24. }
  25.  
  26. int get_days (int month, int year){
  27. int days;
  28. switch (month) {
  29. case 1:
  30. case 3:
  31. case 5:
  32. case 7:
  33. case 8:
  34. case 10:
  35. case 12:
  36. days = 31;
  37. break;
  38. case 4:
  39. case 6:
  40. case 9:
  41. case 11:
  42. days = 30;
  43. break;
  44. case 2:
  45. is_leap(year)?days = 29:days=28;
  46. break;
  47. default:
  48. days = -1;
  49. }
  50. return days;
  51. }
  52.  
  53. int main() {
  54. bool booly = false;
  55. string s,y;
  56. getline(cin, s);
  57. y = reverse(s);
  58. int day = stoi(y.substr(0,2));
  59. int month = stoi(y.substr(2,2));
  60. int year = stoi(y.substr(4,4));
  61. cout << (((month>=1)&&(month<=12)&&(day >= 1)&&(day <= (get_days(month, year))))?"YES":"NO");
  62.  
  63. return 0;
  64. }
Success #stdin #stdout 0s 3468KB
stdin
20.12.2051
stdout
YES