봉화대
시간 제한1초메모리 제한1024 MB
높이 1부터 N까지의 순열이 주어질 때, 각 구간의 최댓값이 왼쪽에서 오른쪽으로 증가하도록 마을을 연속한 구간으로 나누는 경우의 수를 세어 1e9+7로 나눈 나머지를 구한다.
문제
개의 마을이 산등성이를 따라 1번부터 번까지 일렬로 있다. 각 마을의 높이는 1 이상 이하의 자연수 가운데 하나이며, 모든 마을의 높이는 서로 다르다. 외침을 막기 위해 마을을 여러 구간으로 나누고, 각 구간에서 가장 높은 마을에 봉화대를 설치하려 한다. 각 구간은 연속된 마을을 하나 이상 포함해야 하고, 각 마을은 정확히 하나의 구간에 포함되어야 한다. 봉화대끼리 효율적으로 통신하도록, 봉화대가 설치된 마을의 높이는 번호가 커지는 순서로 볼 때 증가해야 한다. 가능한 구간 배치의 개수를 구하시오.
입력
첫째 줄에는 마을의 개수 이 주어진다. ()
둘째 줄에는 각 마을의 높이 이 공백으로 구분되어 주어진다. ()
는 번째 마을의 높이이며, 값은 서로 다르다.
출력
조건을 만족하며 개의 마을을 구간으로 나누는 방법의 가짓수를 로 나눈 나머지를 출력한다.
힌트
첫 번째 예제의 가능한 모든 배치는 (1 / 4 / 2 5 3), (1 / 4 2 / 5 3), (1 / 4 2 5 3), (1 4 / 2 5 3), (1 4 2 / 5 3), (1 4 2 5 3) 이다. /는 구간의 경계이며, 봉화대는 밑줄로 강조된 높이의 마을에 설치된다.

