각 레벨의 클리어 점수 S_i와 시작 레벨에서 해당 레벨까지 누적 점수 K_i가 주어질 때, 부모보다 자식의 S가 큰 조건을 만족하는 레벨 배치의 수를 세는 문제입니다.
어려움8트리조합론정렬DFS아직 제출이 없습니다시간 제한1초메모리 제한256 MB취미로 게임을 만드는 현욱이 오늘 간단한 게임 기획을 하나 떠올렸다. 이 게임에는 레벨이 N개 있고, 플레이어는 레벨을 클리어할 때마다 정해진 점수를 얻는다. 레벨마다 클리어한 뒤 진행할 수 있는 다음 레벨이 몇 개씩 정해져 있으며, 플레이어는 그중 하나를 골라 진행한다.
기획을 정리하면 다음과 같다.
기획을 끝낸 현욱은 위 조건을 만족하는 레벨 배치가 몇 가지나 되는지 궁금해졌다. 주어진 Si와 Ki를 모두 만족하도록 레벨 N개를 배치하는 경우의 수를 구하는 프로그램을 작성하라.
첫째 줄에 레벨의 개수 N(1≤N≤3×105)이 주어진다.
둘째 줄에 각 레벨의 S1,S2,…,SN(1≤Si≤109)이 공백으로 구분되어 주어진다.
셋째 줄에 각 레벨의 K1,K2,…,KN(1≤Ki≤109)이 공백으로 구분되어 주어진다.
첫째 줄에 주어진 Si, Ki를 만족하도록 레벨을 배치하는 경우의 수를 109+7로 나눈 나머지를 출력한다. 두 배치에서 모든 레벨의 다음 레벨 목록이 같으면(목록 안의 순서는 상관없다) 같은 배치로 본다.
첫 번째 예제에서 조건을 만족하는 배치는 하나뿐이다. 시작 레벨은 1번이고, 1번을 클리어한 뒤 2번과 3번 중 하나를 골라 진행한다. 두 번째 예제에서는 조건을 만족하는 배치가 없다.