가변 부분수열
시간 제한2초메모리 제한512 MB
이웃한 두 항이 항상 다른 부분수열을 위치 집합 기준으로 셈하는 문제다.
문제
수열 이 주어진다. 수열의 부분수열은 원래 수열에서 임의 개수(0개일 수도 있다)의 항을 제거해 얻는 수열이다. 즉 을 만족하는 첨자들에 대해 형태로 쓸 수 있는 수열을 뜻한다.
가변 부분수열은 인접한 두 항이 항상 서로 다른 부분수열이다. 예를 들어 는 의 가변 부분수열이다.
주어진 수열에서 공집합이 아니면서 서로 다른 가변 부분수열이 몇 개인지 구하자. 두 부분수열은 대응하는 위치(첨자) 집합이 서로 다르면 다른 것으로 센다. 예컨대 에는 형태의 가변 부분수열이 서로 다른 두 가지 존재한다.
입력
첫째 줄에 수열 의 길이 () 이 주어진다. 둘째 줄에 개의 정수 () 가 공백으로 구분되어 주어진다.
출력
공집합이 아닌 가변 부분수열의 개수를 로 나눈 나머지를 첫째 줄에 출력한다.
힌트
수열 에서 세는 가변 부분수열은 다음과 같다.
- : 세 번 (1번, 3번, 4번 위치)
- : 한 번
- : 한 번
- : 두 번
- : 두 번
따라서 모두 가지이다.