Submission #238549

#TimeUsernameProblemLanguageResultExecution timeMemory
238549BorbiDatum (COCI20_datum)C++14
50 / 50
331 ms512 KiB
#include <bits/stdc++.h> using namespace std; char str[20]; char new_s[20]; bool check() { int mon = new_s[3] - '0'; mon *= 10; mon += new_s[4] - '0'; int day = new_s[0] - '0'; day *= 10; day += new_s[1] - '0'; int year = 0; for(int i = 6; i <= 9; i++) { year *= 10; year += new_s[i] - '0'; } int mon1 = str[3] - '0'; mon1 *= 10; mon1 += str[4] - '0'; int day1 = str[0] - '0'; day1 *= 10; day1 += str[1] - '0'; int year1 = 0; for(int i = 6; i <= 9; i++) { year1 *= 10; year1 += str[i] - '0'; } if(year < year1) return false; else if(year > year1) return true; if(mon < mon1) return false; if(mon > mon1) return true; if(day < day1) return false; if(day > day1) return true; return false; /*bool fl = false; for(int i = 6; i <= 9; i++) { if(str[i] > new_s[i]) return false; if(str[i] != new_s[i]) fl = true; } if(fl) return true; for(int i = 3; i <= 4; i++) { if(str[i] > new_s[i]) return false; if(str[i] != new_s[i]) fl = true; } if(fl) return true; for(int i = 0; i <= 1; i++) { if(str[i] > new_s[i]) return false; if(str[i] != new_s[i]) fl = true; } return fl;*/ } bool legal() { int mon = new_s[3] - '0'; mon *= 10; mon += new_s[4] - '0'; int day = new_s[0] - '0'; day *= 10; day += new_s[1] - '0'; if(mon > 12) return false; int year = 0; for(int i = 6; i <= 9; i++) { year *= 10; year += new_s[i] - '0'; } if(mon == 0 || day == 0) return false; if((mon > 7 && (mon & 1) != 0) || (mon <= 7 && (mon & 1) == 0)) { if(mon == 2) { if(year % 4 == 0) { if(day > 29) return false; } else if(day > 28) return false; } else if(day > 30) return false; } else if(day > 31) return false; return true; } void solve() { cin >> str; new_s[2] = new_s[5] = new_s[10] = '.'; for(char i = '0'; i <= '9'; i++) { for(char j = '0'; j <= '9'; j++) { for(char z = '0'; z <= '9'; z++) { for(char h = '0'; h <= '9'; h++) { new_s[9] = new_s[0] = h; new_s[1] = new_s[8] = z; new_s[3] = new_s[7] = j; new_s[4] = new_s[6] = i; if(legal() && check()) { for(int i = 0; i <= 10; i++) { cout << new_s[i]; } cout << "\n"; return; } } } } } } int main() { int k; cin >> k; while(k--) { solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...