답안 #845668

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
845668 2023-09-06T14:50:46 Z vjudge1 Datum (COCI20_datum) C++17
0 / 50
1000 ms 69340 KB
#include <bits/stdc++.h>
using namespace std;
map < string , string > mpa;
bool is_palindrome(string &s){
	int sz = (int)s.size();
	for(int i = 0;i<(sz/2);i++){
		if(s[i] != s[sz-i-1])return 0;
	}
	return 1;
}
void solve(){
	string str;cin >> str;
	string temp;
	for(auto itr : str)if(itr != '.')temp += itr;
	str = temp;
	//cout << str << endl;
	int monthend[13] = {0 , 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,31};
	//int sayac = 0;
	do {
		int day = (str[0] - '0') * 10 + (str[1] - '0');
		int month = (str[2] - '0') * 10 + (str[3] - '0');
		int year = (str[4] - '0') * 1000 + (str[5] - '0') * 100 + (str[6] - '0') * 10 + (str[7] - '0');
		//if(sayac++ < 30)cout << day << "." << month << "." << year << endl;
		if(year % 4 == 0)monthend[2]++;
		day++;
		if((monthend[month]+1) == day){
			day = 1;
			month++;
		}
		if(month == 13){
			month = 1;
			year++;
		}
		if(monthend[2] == 29)monthend[2]--;
		str = "";
		if(day / 10 == 0)str += '0';
		str += to_string(day);
		if(month / 10 == 0)str += '0';
		str += to_string(month);
		if(year / 1000 == 0)str += '0';
		if(year / 100 == 0)str += '0';
		if(year / 10 == 0)str += '0';
		str += to_string(year);
		if(mpa.count(str)){
			str = mpa[str];
			break;
		}
		cout << str << endl;
	} while(is_palindrome(str) == 0);
	//answer is str
	do {
		int day = (temp[0] - '0') * 10 + (temp[1] - '0');
		int month = (temp[2] - '0') * 10 + (temp[3] - '0');
		int year = (temp[4] - '0') * 1000 + (temp[5] - '0') * 100 + (temp[6] - '0') * 10 + (temp[7] - '0');
		//if(sayac++ < 30)cout << day << "." << month << "." << year << endl;
		if(year % 4 == 0)monthend[2]++;
		day++;
		if((monthend[month]+1) == day){
			day = 1;
			month++;
		}
		if(month == 13){
			month = 1;
			year++;
		}
		if(monthend[2] == 29)monthend[2]--;
		temp = "";
		if(day / 10 == 0)temp += '0';
		temp += to_string(day);
		if(month / 10 == 0)temp += '0';
		temp += to_string(month);
		if(year / 1000 == 0)temp += '0';
		if(year / 100 == 0)temp += '0';
		if(year / 10 == 0)temp += '0';
		temp += to_string(year);
		if(mpa.count(temp))break;
		else mpa[temp] = str;
		//if(sayac++ < 30)cout << str << endl;
	} while(temp != str);
	cout << str[0] << str[1] << "." << str[2] << str[3] << "." << str[4] << str[5] << str[6] << str[7] << "." << endl;
}
signed main(){
	ios_base::sync_with_stdio(0);cin.tie(0);
	int testcase = 1;cin >> testcase;
	while(testcase--)solve();
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Execution timed out 1091 ms 54876 KB Time limit exceeded
3 Incorrect 0 ms 348 KB Output isn't correct
4 Incorrect 2 ms 348 KB Output isn't correct
5 Incorrect 2 ms 348 KB Output isn't correct
6 Execution timed out 1058 ms 66720 KB Time limit exceeded
7 Execution timed out 1082 ms 54116 KB Time limit exceeded
8 Execution timed out 1068 ms 69340 KB Time limit exceeded
9 Execution timed out 1060 ms 66084 KB Time limit exceeded
10 Execution timed out 1030 ms 63868 KB Time limit exceeded