하이퍼 버닝

NYPC 2024 · 본선

메이플스토리에 새롭게 등장한 칼리, 칼리는 더욱 강력해지기 위해 몬스터 사냥에 나섰다. 칼리는 깊은 숲속 사냥터에 도착했는데, 이곳에는 다양한 종류의 몬스터들이 서식하고 있다. 칼리는 자신의 레벨을 최대한 높이기 위해 어떤 몬스터들을 사냥해야 할지 고민하고 있다. 특히, 칼리의 전투 스타일은 차크람을 사용하는 독특한 방식이기에, 전략적인 사냥이 중요하다.

이 사냥터에는 NN 마리의 몬스터가 있으며, 각 몬스터는 특정 레벨 이상이 되어야 사냥할 수 있다. 또한, 각 몬스터를 사냥하면 칼리의 레벨이 일정량 상승한다. 칼리는 현재 레벨 SS이며, 최선의 전략으로 몬스터를 사냥하여 도달할 수 있는 최대 레벨을 알고 싶어한다.

칼리는 사냥할 수 있는 몬스터들을 어떤 순서로든 사냥할 수 있으며, 각 몬스터를 최대 한 번만 사냥할 수 있고, 사냥터에 있는 모든 몬스터를 사냥하지 못할 수도 있다. 칼리를 도와 도달할 수 있는 최대 레벨을 계산하는 프로그램을 작성하라.

입력 형식

첫 줄에 몬스터의 수를 나타내는 정수 NN과 칼리의 시작 레벨 SS가 공백으로 구분되어 주어진다. (1N500000;1 \le N \le 500\,000; 1S10000000001 \le S \le 1\,000\,000\,000)

이어지는 NN 개의 줄의 ii 번째 줄에는 ii 번째 몬스터의 정보를 나타내는 두 정수 qiq_iuiu_i가 공백으로 구분되어 주어진다. 이는 ii 번째 몬스터를 사냥하기 위한 최소 레벨이 qiq_i이며, 이 몬스터를 사냥하였을 때, 올라가는 레벨이 uiu_i임을 의미한다. (1qi,ui10000000001 \le q_i, u_i \le 1\,000\,000\,000)

출력 형식

첫 줄에 최선의 전략으로 몬스터를 사냥하였을 때 도달할 수 있는 최대 레벨을 출력한다.

예제 1

입력

3 10 10 2 12 5 20 10

출력

17

예제 2

입력

4 10 13 5 12 3 10 1 11 2

출력

21

예제 설명

입력 예제 1에서, 최대 레벨에 도달하는 유일한 방법은 이러하다. 레벨이 1010인 칼리는 첫 번째 몬스터를 사냥해 레벨이 1212가 된다. 그다음 두 번째 몬스터를 사냥해 레벨이 1717이 된다. 세 번째 몬스터를 사냥하기 위한 최소 레벨은 2020이므로, 칼리는 이 몬스터를 사냥할 수 없다.

입력 예제 2에서, 최대 레벨에 도달하는 한 가지 방법은 이러하다. 레벨이 1010인 칼리는 세 번째 몬스터를 사냥해 레벨이 1111이 된다. 그다음 네 번째 몬스터를 사냥해 레벨이 1313이 된다. 그다음 첫 번째 몬스터를 사냥해 레벨이 1818이 된다. 마지막으로 두 번째 몬스터를 사냥해 레벨이 2121이 된다.

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 31

N10N \le 10

종류 2: 28

N1000N \le 1\,000

종류 3: 41

추가적인 제한 조건이 없음.

해설