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

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

신비한 배열

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

요약
Q개의 구간 최솟값 조건을 모두 만족하는 1부터 N까지의 순열 개수를 10^9+7로 나눈 나머지로 구하고, 모순이면 0을 출력한다.
난이도

어려움10점 중 8점

유형
조합론, 정렬, 수학, 구현
정답자
아직 제출이 없습니다

문제

길이가 NN인 배열이 있다. 배열은 1,2,…,N1, 2, \dots, N의 순열을 담는다. 각 수는 배열에 정확히 한 번씩 나온다. 위치는 11부터 센다.

배열 내용은 알 수 없다. 대신 구간 최솟값을 묻는 질의 QQ개의 답이 주어진다. 각 질의는 aa번 위치부터 bb번 위치까지 최소값을 묻는다.

모든 질의에 맞는 배열이 몇 개인지 구하는 것이 과제이다.

입력

첫째 줄에 정수 NN과 QQ가 주어진다. NN은 배열 크기이고 QQ는 질의 개수이다.

다음 QQ개 줄에는 질의가 한 줄에 하나씩 주어진다. 각 줄에는 세 정수 aa, bb, xx가 주어진다 (1≤a≤b≤N1 \le a \le b \le N이고 1≤x≤N1 \le x \le N). 이는 aa번 위치부터 bb번 위치까지 최소값이 xx라는 뜻이다.

질의는 서로 모순될 수 있다. 조건에 맞는 배열이 없을 수도 있다.

출력

조건에 맞는 배열 개수를 109+710^9+7로 나눈 나머지를 한 줄에 출력한다.

힌트

질의가 모순되면 답은 00이다. 값이 같은 질의는 교집합에 모두 들어가야 한다. 작은 값부터 위치를 정하면 각 단계에서 선택지가 서로 겹치지 않는다.

예제2

  1. 예제 1

    입력
    3 2
    1 2 2
    1 3 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    8 3
    3 7 2
    6 8 2
    4 5 5
    
    예상 출력
    576