#740
Unrated
알고리즘 캠프 관리
원문: English
시간 제한
2s
메모리 제한
1024MB
제출
0
정답
0
맞힌 사람
0
정답 비율
0.0%

문제

우솔이가 운영하는 알고리즘 캠프에 NN명의 사람이 있으며, 이들은 11부터 NN까지 번호가 매겨져 있다. 각 사람은 참가생이거나 운영진이다.

캠프에서 현장 학습을 가기 위해 비어 있지 않은 사람들의 부분 집합을 선택하려고 한다. 만약 ii번째 사람이 선택되면, 그 사람은 수직선 상의 좌표 pip_i에 위치하게 된다. 좌표 배열 pp는 엄격히 증가하는 순서로 주어진다.

선택된 부분 집합에 포함된 모든 참가생에 대해, 해당 참가생의 왼쪽으로 거리 DD 이내(자기 자신의 위치 포함)에 선택된 운영진이 적어도 한 명 있다면, 이 부분 집합을 좋은 집합이라고 부른다.

즉, 좌표 pip_i에 있는 참가생이 선택되었다면, piDpjpip_i - D \le p_j \le p_i를 만족하면서 함께 선택된 운영진 jj가 반드시 존재해야 한다.

가능한 좋은 집합의 개수를 10000000071\,000\,000\,007로 나눈 나머지를 구하시오.

입력

첫째 줄에 사람의 수 NN과 거리 제한 DD가 공백으로 구분되어 주어진다. (1N1061 \le N \le 10^6; 0D1090 \le D \le 10^9)

이어서 NN개의 줄에 걸쳐 ii번째 사람의 좌표 pip_i와 유형 oio_i가 공백으로 구분되어 주어진다. oi=1o_i=1이면 운영진, oi=0o_i=0이면 참가생임을 의미한다. (0pi1090 \le p_i \le 10^9)

좌표 pip_i는 엄격히 증가하는 순서로 주어진다.

출력

좋은 집합의 개수를 10000000071\,000\,000\,007로 나눈 나머지를 출력한다.

예제 입력 1

6 1
3 1
4 0
6 1
7 1
9 0
10 0

예제 출력 1

11

예제 입력 2

20 24
3 0
14 0
17 1
20 0
21 0
22 1
28 0
30 0
32 0
33 1
38 0
40 0
52 0
58 0
73 0
75 0
77 1
81 1
84 1
97 0

예제 출력 2

13094
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출
제출 내역이 없습니다.
맞은 사람
아직 맞은 사람이 없습니다.
난이도 투표
Unrated0명 투표
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
제출 내역이 없습니다.