정렬된 프랙탈 수열
시간 제한1초메모리 제한1024 MB
길이 N의 비내림차순 수열 중 모든 i에 대해 a[a[i]]가 a[i]와 같고 고정된 K개 위치의 값을 만족하는 수열의 개수를 M으로 나눈 나머지로 구합니다.
문제
개의 양의 정수로 이루어진 수열 가 있다. 의 각 원소는 을 넘지 않으며, 는 비내림차순으로 정렬되어 있다. 같은 값을 가진 원소가 둘 이상 있을 수 있다.
로 결정되는 길이 의 수열 를 다음과 같이 정의한다.
여기서 인 모든 에 대해 는 의 번째 원소이고, 는 의 번째 원소이다.
를 만족하는 수열 를 정렬된 프랙탈 수열이라고 한다.
문제를 어렵게 만들기 위해 제약을 하나 추가한다. 에서 개의 원소를 골라 각각 지정한 값으로 고정한다. 고정된 값은 이후에 바꿀 수 없다.
과 제약 조건이 주어졌을 때, 길이가 인 서로 다른 정렬된 프랙탈 수열의 개수를 으로 나눈 나머지를 구하시오.
입력
첫 번째 줄에 세 정수 (), (), ()가 공백으로 구분되어 주어진다.
이어지는 개의 줄에는 위치 ()와 값 ()가 공백으로 구분되어 주어진다. 이는 를 로 고정한다는 뜻이다. 같은 위치가 두 번 이상 나오지 않는다.
출력
길이가 인 서로 다른 정렬된 프랙탈 수열의 개수를 으로 나눈 나머지를 출력한다.
힌트
두 수열 와 가 같을 필요충분조건은 다음과 같다.
- 와 의 길이가 같다.
- 그 길이를 이라 할 때, 인 모든 에 대해 의 번째 원소 와 의 번째 원소 가 같다.
와 가 같으면 로 표기한다.