버스 시간표

아직 제출이 없습니다시간 제한2초메모리 제한128 MB

문제

세계 대회 본선에 진출한 사람이 바로 여러분이라고 상상해 보자. 멋진 일이다. 그러면 비행기, 기차, 버스 등 여러 교통수단으로 이동하게 될 것이다. 준비가 되었는가? 이 문제는 버스 시간표(time-table)를 읽는 방향 감각을 시험한다.

알다시피 모든 버스가 매일 운행하지는 않는다. 버스 시간표에서 버스가 운행하는 날은 보통 여러 지정자(specifier)의 목록으로 주어진다. 어떤 것은 단순하고("월요일만"), 어떤 것은 조금 헷갈리며("평일만"), 어떤 것은 완전히 난해하다.

이 문제에서 지정자는 다음 중 하나일 수 있다.

지정자의미
1버스는 월요일에 운행한다.
2버스는 화요일에 운행한다. 이런 식으로 이어진다.
7버스는 일요일에 운행한다.
t버스는 일요일과 공휴일에 운행한다. 공휴일은 1월 1일, 부활절 월요일, 5월 1일, 5월 8일, 7월 5일, 7월 6일, 9월 28일, 10월 28일, 11월 17일, 그리고 12월 24일·25일·26일이다.
w버스는 평일에 운행한다. 평일은 월요일부터 금요일까지 중 t에 해당하는 날을 제외한 날이다.
a버스는 t에 해당하는 날 바로 다음의 평일에 운행한다.

또한 운행일은 특정 날짜 또는 날짜 범위로만 제한될 수 있으며, 이는 쉼표로 구분된 원소들의 목록으로 주어진다. 각 원소는 하나의 날짜(D.M. 형식, D는 일, M은 월) 또는 날짜 범위(D1.M1.-D2.M2. 형식, 앞의 날짜가 뒤의 날짜보다 앞서야 하며 두 경계 날짜 모두 범위에 포함된다)이다. 예를 들어 지정 문자열

3a 1.1.-30.6.,31.7.,1.9.-31.12.

는 수요일과 공휴일 바로 다음 평일에만 운행하되, 그 날이 7월 31일이거나 1월 1일부터 6월 30일 사이, 또는 9월 1일부터 12월 31일 사이(양 끝 포함)에 있을 때만 운행하는 버스를 나타낸다. 여러분의 과제는 주어진 연도에 이 버스가 운행하는 모든 날을 세는 것이다.

참고:

  • 오늘은 2010년 10월 23일 토요일이다.
  • 각 연도는 365일이며, 윤년에는 하루(2월 29일)가 추가되어 366일이 된다. 연도 $Y$는 4로 나누어떨어지면 윤년이다. 단, 100으로 나누어떨어지는 해는 400으로도 나누어떨어질 때만 윤년이다. 윤년이 아닌 해에 29.2.가 단일 날짜로 쓰이면 무시되고, 날짜 범위의 시작으로 쓰이면 3월 1일로 해석되며, 범위의 끝으로 쓰이면 2월 28일로 해석된다.
  • 부활절 월요일은 부활절 일요일 바로 다음 월요일이다. 부활절 일요일은 그 해의 교회 만월(Paschal Full Moon) 날짜보다 엄격히 뒤에 오는 첫 번째 일요일이다. 연도 $y$의 교회 만월 날짜는 다음 알고리즘으로 구할 수 있다.

int golden, solar, lunar, p;

golden = (y % 19) + 1; solar = (y - 1600) / 100 - (y - 1600) / 400; lunar = (((y - 1400) / 100) * 8) / 25; p = (3003 - (11 * golden) + solar - lunar) % 30; if (p == 29 || (p == 28 && golden > 11)) p--;

교회 만월 날짜는 3월 21일로부터 $p$일 뒤이다(단 $0 \le p \le 28$).

입력

입력은 여러 개의 테스트 케이스로 이루어지며, 각 케이스는 한 줄이다. 각 줄에는 비어 있지 않은 두 문자열 $S$, $R$과 정수 $Y$($1600 \le Y \le 3000$)가 공백으로 구분되어 주어진다. 문자열 $S$는 문자 1, …, 7, t, w, a만 포함하며, 각 문자는 최대 한 번 등장한다(순서는 임의이다). 문자열 $R$는 길이가 최대 1000이며, 위에서 설명한 형식의 날짜와 날짜 범위를 쉼표로 구분한 목록이다. $R$에 포함된 날짜와 날짜 범위는 서로 겹치지 않으며 항상 오름차순으로 주어진다. 입력은 파일 끝까지 읽는다.

출력

각 입력 케이스에 대해, 연도 $Y$에서 범위 $R$에 속하면서 $S$의 지정자 중 적어도 하나를 만족하는 날의 개수를 정수 하나로 한 줄에 출력한다.