题干:

A recently found Ancient Prophesy is believed to contain the exact Apocalypse date. The prophesy is a string that only consists of digits and characters "-".

We'll say that some date is mentioned in the Prophesy if there is a substring in the Prophesy that is the date's record in the format "dd-mm-yyyy". We'll say that the number of the date's occurrences is the number of such substrings in the Prophesy. For example, the Prophesy "0012-10-2012-10-2012" mentions date 12-10-2012 twice (first time as "0012-10-2012-10-2012", second time as "0012-10-2012-10-2012").

The date of the Apocalypse is such correct date that the number of times it is mentioned in the Prophesy is strictly larger than that of any other correct date.

A date is correct if the year lies in the range from 2013 to 2015, the month is from 1 to 12, and the number of the day is strictly more than a zero and doesn't exceed the number of days in the current month. Note that a date is written in the format "dd-mm-yyyy", that means that leading zeroes may be added to the numbers of the months or days if needed. In other words, date "1-1-2013" isn't recorded in the format "dd-mm-yyyy", and date "01-01-2013" is recorded in it.

Notice, that any year between 2013 and 2015 is not a leap year.

Input

The first line contains the Prophesy: a non-empty string that only consists of digits and characters "-". The length of the Prophesy doesn't exceed 105 characters.

Output

In a single line print the date of the Apocalypse. It is guaranteed that such date exists and is unique.

Examples

Input

777-444---21-12-2013-12-2013-12-2013---444-777

Output

13-12-2013

题目大意:

有一个字符串,让你找出其中最多的合法日期出现次数,格式为:dd-mm-yyyy。

解题报告:

  学会了KMP,自然会接触到BF算法吧。。不难想到这题的数据量肯定是要暴力的。于是乎又到了考验代码仔细度的时候了。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX = 2e5 + 5;
char s[MAX];
char tmp[15];
string ans;
int month[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
map<string,int> mp;
map<string,int> :: iterator it;
int main()
{
	cin>>s;
	int len = strlen(s);
	for(int i = 0; i<=len-10; i++) {
		for(int j = 0; j<10; j++) {
			tmp[j] = s[j+i];
		}
		tmp[10]='\0';
		if(tmp[6] != '2' || tmp[7] != '0' || tmp[8] != '1') continue;
		if(tmp[9] != '3' && tmp[9] != '4' && tmp[9] != '5') continue;
		//处理年份 
		if(tmp[2] != '-' || tmp[5] != '-') continue;
		if(!isdigit(tmp[0]) || !isdigit(tmp[1]) || !isdigit(tmp[3]) || !isdigit(tmp[4]) || !isdigit(tmp[6]) || !isdigit(tmp[7]) || !isdigit(tmp[8]) || !isdigit(tmp[9])) continue;
		int yue = (tmp[3]-'0')*10+tmp[4]-'0';
		if(yue <=0 || yue > 12) continue;
		int day = (tmp[0]-'0')*10 + tmp[1]-'0';
		if(day > month[yue] || day <= 0)  continue;
		mp[tmp]++;
	}
	it = mp.begin();
	int maxx = 0;
	for(;it!=mp.end(); ++it) {
		if(maxx < (it->second)) {
			maxx = it->second;
			ans= it->first;
		}
	}
	cout << ans << endl;
	return 0 ;
 }

总结:

  刚开始1WA发现那个if(day > month[yue] || day <= 0)  continue;写成了day<0,,改过来交一发还是WA,想想可能是因为‘-’字符没有判断正确,于是直接把所有的都判断一遍。,再交AC了。