#include <iostream>
#include <string>
#include <regex>
#include <exception>
using namespace std;
void parseDate(const string& date, int& year, int& month, int& day)
{
regex dateValidateRe(R"(^(\d{4})\-(\d{1,2})\-(\d{1,2})$)");
smatch matches;
if (!regex_search(date, matches, dateValidateRe))
{
throw invalid_argument("Date format is incorrect");
}
year = stoi(matches[1]);
month = stoi(matches[2]);
day = stoi(matches[3]);
}
int main() {
int year, month, day;
string date;
cin >> date;
try
{
parseDate(date, year, month, day);
}
catch (std::exception& ex)
{
cout << "Invalid input: " << ex.what() << endl;
}
cout << "The date entered was Year = " << year << " Month = " << month << " Day = " << day << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8cmVnZXg+CiNpbmNsdWRlIDxleGNlcHRpb24+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHBhcnNlRGF0ZShjb25zdCBzdHJpbmcmIGRhdGUsIGludCYgeWVhciwgaW50JiBtb250aCwgaW50JiBkYXkpCnsKCXJlZ2V4IGRhdGVWYWxpZGF0ZVJlKFIiKF4oXGR7NH0pXC0oXGR7MSwyfSlcLShcZHsxLDJ9KSQpIik7CglzbWF0Y2ggbWF0Y2hlczsKCWlmICghcmVnZXhfc2VhcmNoKGRhdGUsIG1hdGNoZXMsIGRhdGVWYWxpZGF0ZVJlKSkKCXsKCQl0aHJvdyBpbnZhbGlkX2FyZ3VtZW50KCJEYXRlIGZvcm1hdCBpcyBpbmNvcnJlY3QiKTsKCX0KCXllYXIgPSBzdG9pKG1hdGNoZXNbMV0pOwoJbW9udGggPSBzdG9pKG1hdGNoZXNbMl0pOwoJZGF5ID0gc3RvaShtYXRjaGVzWzNdKTsKfQoKaW50IG1haW4oKSB7CglpbnQgeWVhciwgbW9udGgsIGRheTsKCXN0cmluZyBkYXRlOwoJY2luID4+IGRhdGU7Cgl0cnkKCXsKCQlwYXJzZURhdGUoZGF0ZSwgeWVhciwgbW9udGgsIGRheSk7Cgl9CgljYXRjaCAoc3RkOjpleGNlcHRpb24mIGV4KQoJewoJCWNvdXQgPDwgIkludmFsaWQgaW5wdXQ6ICIgPDwgZXgud2hhdCgpIDw8IGVuZGw7Cgl9Cgljb3V0IDw8ICJUaGUgZGF0ZSBlbnRlcmVkIHdhcyBZZWFyID0gIiA8PCB5ZWFyIDw8ICIgTW9udGggPSAiIDw8IG1vbnRoIDw8ICIgRGF5ID0gIiA8PCBkYXkgPDwgZW5kbDsKCXJldHVybiAwOwp9