아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Icpca 문자

시간 제한3초메모리 제한512 MB

요약
n개 문자의 전순서 중에서 두 중첩 최솟값/최댓값 표현식이 같은 값으로 계산되는 경우의 수를 센다.
난이도

어려움10점 중 8점

유형
동적 계획법, 완전 탐색, 조합론, 구현
정답자
아직 제출이 없습니다

문제

그림 D-1 돌벽에 새겨진 두 식의 사진.

선사 문명 연구소(ICPC)에서는 고대 Icpca 왕국의 문명을 연구해 왔다. 최근 발굴에서 Icpca 유적의 돌벽에 새겨진 두 식이 발견되었다. 이 식들은 n개의 서로 다른 Icpca 문자 a1, ..., an, 부등호('<', '>')에 해당하는 기호, 괄호('(', ')')로 이루어져 있다. 설명을 쉽게 하기 위해 이들을 로마자 대문자와 일반 기호로 나타낸다. 식은 시작 기호 E에 대한 다음 문법 규칙을 따른다.

  E ::= F | '(' E '<' E ')' | '(' E '>' E ')'
  F ::= a1 | a2 | … | an

고대 왕국과 그 문명에 대한 여러 지식을 통합한 분석으로 다음 평가 규칙이 밝혀졌다.

  • 문자 a1, ..., an의 집합 위에 전순서 관계가 정의된다.
  • 식이 문자 하나로만 이루어져 있으면 그 식의 값은 그 문자이다.
  • 값이 ai인 식 P와 값이 aj인 식 Q에 대해, 식 (P<Q)의 값은 전순서에서 앞서는 쪽인 ai 또는 aj이다. 두 문자가 같으면 그 문자이다.
  • 마찬가지로, 값이 ai인 식 P와 값이 aj인 식 Q에 대해, 식 (P>Q)의 값은 전순서에서 뒤에 오는 쪽인 ai 또는 aj이다. 두 문자가 같으면 그 문자이다.

발견된 두 식의 값은 서로 같아야 한다는 사실도 밝혀졌다. n!개의 가능한 전순서 중 두 식의 값이 같아지게 하는 서로 다른 전순서는 몇 개인가?

입력

입력은 여러 데이터셋으로 이루어지며, 각 데이터셋은 다음 형식이다.

n a1a2...an S T

각 데이터셋은 네 줄로 이루어진다. 첫째 줄에는 Icpca 문자에 대응하는 서로 다른 로마자 대문자의 개수 n (1 ≤ n ≤ 16)이 주어진다. 둘째 줄에는 n개의 서로 다른 로마자 대문자가 공백 없이 주어진다. 셋째 줄과 넷째 줄에는 각각 발견된 두 식 S와 T가 주어진다. S와 T는 모두 위에 주어진 문법을 따르며, 각각 100자를 넘지 않는다.

입력의 끝은 0만 포함된 줄로 표시된다. 데이터셋의 개수는 50개를 넘지 않는다.

출력

각 데이터셋에 대해 두 식의 값이 같아지게 하는 서로 다른 전순서의 개수를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    3
    CIP
    ((I<C)>(P<C))
    (P>C)
    2
    AB
    (A<B)
    (A>B)
    3
    ANY
    ((A<N)<Y)
    ((N<Y)<((A<A)<N))
    6
    ANSWER
    A
    ((E>(A>((E<W)>(N<S))))>(A<W))
    0
    
    예상 출력
    1
    0
    6
    300