신비한 배열
시간 제한2초메모리 제한512 MB
Q개의 구간 최솟값 조건을 모두 만족하는 1부터 N까지의 순열 개수를 10^9+7로 나눈 나머지로 구하고, 모순이면 0을 출력한다.
문제
길이가 인 배열이 있다. 배열은 의 순열을 담는다. 각 수는 배열에 정확히 한 번씩 나온다. 위치는 부터 센다.
배열 내용은 알 수 없다. 대신 구간 최솟값을 묻는 질의 개의 답이 주어진다. 각 질의는 번 위치부터 번 위치까지 최소값을 묻는다.
모든 질의에 맞는 배열이 몇 개인지 구하는 것이 과제이다.
입력
첫째 줄에 정수 과 가 주어진다. 은 배열 크기이고 는 질의 개수이다.
다음 개 줄에는 질의가 한 줄에 하나씩 주어진다. 각 줄에는 세 정수 , , 가 주어진다 (이고 ). 이는 번 위치부터 번 위치까지 최소값이 라는 뜻이다.
질의는 서로 모순될 수 있다. 조건에 맞는 배열이 없을 수도 있다.
출력
조건에 맞는 배열 개수를 로 나눈 나머지를 한 줄에 출력한다.
힌트
질의가 모순되면 답은 이다. 값이 같은 질의는 교집합에 모두 들어가야 한다. 작은 값부터 위치를 정하면 각 단계에서 선택지가 서로 겹치지 않는다.