#include<bits/stdc++.h>
using namespace std;
bool check(string s)
{
int m[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(stoi(s) % 4 == 0)
m[1] = 29;
string MM; MM += s[1], MM += s[0];
if(stoi(MM) <= 0 || stoi(MM) > 12)
return false;
int idx = stoi(MM) - 1;
string DD; DD += s[3], DD += s[2];
if(stoi(DD) <= 0 || stoi(DD) > m[idx])
return false;
return true;
}
bool compare(string a, string b)
{
if(a.substr(3, 2) != b.substr(3, 2)) return a.substr(3, 2) < b.substr(3, 2);
return a.substr(0, 2) < b.substr(0, 2);
}
void solve()
{
string date;
cin >> date;
string Y = date.substr(6, 4);
string ans;
ans += Y[3], ans += Y[2], ans += '.', ans += Y[1], ans += Y[0], ans += '.';
ans += Y, ans += '.';
if(check(Y) && compare(date, ans))
{
cout << Y[3] << Y[2] << '.' << Y[1] << Y[0] << '.' << Y << ".\n";
return;
}
while(true)
{
int s = stoi(Y) + 1;
Y = to_string(s);
while(Y.size() < 4)
Y = '0' + Y;
if(check(Y))
break;
}
cout << Y[3] << Y[2] << '.' << Y[1] << Y[0] << '.' << Y << ".\n";
}
int main()
{
int t;
cin >> t;
while(t--)
solve();
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
349 ms |
444 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
344 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
348 KB |
Output is correct |
10 |
Correct |
327 ms |
344 KB |
Output is correct |