Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.72 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int YEAR_MAX = 9092;
  5. int n;
  6. string s, dString, mString, yString;
  7. int dInt, mInt, yInt;
  8.  
  9. bool isLeap(int year){
  10.     return ((year % 4 == 0) && (year % 100 != 0));
  11. }
  12.  
  13. bool isDate(int d, int m, int y){
  14.     if(m < 1 || m > 12) return false;
  15.     if(d < 1 || d > 31) return false;
  16.  
  17.     if(m == 2){
  18.         if(isLeap(y)) return (d <= 29);
  19.         else return (d <= 28);
  20.     }
  21.  
  22.     if(m == 4 || m == 6 || m == 9 || m == 11)
  23.         return (d <= 30);
  24.  
  25.     return true;
  26. }
  27.  
  28. bool dateCompare(int d1, int m1, int y1, int d2, int m2, int y2)
  29. {
  30.     if(y1 > y2) return true;
  31.     if(m1 < m2)
  32.         return false;
  33.     else if(m1 == m2)
  34.         return (d1 > d2);
  35.     return true;
  36. }
  37.  
  38. int getInt(string s){
  39.     int res=0;
  40.     for(int i=0;i<s.size();i++)
  41.         res = res*10 + (s[i] - '0');
  42.     return res;
  43. }
  44.  
  45. void printPalindromeDate()
  46. {
  47.     cin>>s;
  48.  
  49.     dInt = getInt(s.substr(0,2));
  50.     mInt = getInt(s.substr(3,2));
  51.     yInt = getInt(s.substr(6,4));
  52.  
  53.     for(int year = yInt; year <= YEAR_MAX; year++)
  54.     {
  55.         string str = to_string(year);
  56.  
  57.         while(str.size() < 4)
  58.             str.insert(0,"0");
  59.  
  60.         string rev = str;
  61.         reverse(rev.begin(), rev.end());
  62.  
  63.         int day = getInt(rev.substr(0, 2));
  64.         int month = getInt(rev.substr(2, 2));
  65.  
  66.         if(isDate(day, month, year) && dateCompare(day, month, year, dInt, mInt, yInt))
  67.         {
  68.             rev.insert(2,".");
  69.             cout<<rev<<"."<<str<<"."<<endl;
  70.             return;
  71.         }
  72.     }
  73. }
  74.  
  75. int main()
  76. {
  77.     ios_base::sync_with_stdio(0);
  78.     cin.tie(0);
  79.  
  80.     freopen("DATE.INP","r",stdin);
  81.     freopen("DATE.OUT","w",stdout);
  82.  
  83.     cin>>n;
  84.  
  85.     for(int i=0; i<n; i++)
  86.         printPalindromeDate();
  87.  
  88.     return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement