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

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

엘리베이터

면접 대비

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

요약
승객의 도착 시각과 목적 층이 주어질 때, 엘리베이터를 언제 보내야 모든 승객을 태우고 0층으로 가장 빨리 돌아올 수 있는지 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 그리디, 이분 탐색, 배열
정답자
아직 제출이 없습니다

문제

아주 중요한 일을 맡았다. 새로 지은 고층 빌딩의 엘리베이터를 책임지게 된 것이다.

nn명의 사람이 00층에 있는 지하 주차장에 와서 위층으로 올려다 줄 엘리베이터를 기다린다. 정확히 말해 ii번째 사람은 tit_i 시각에 엘리베이터에 오고 aia_i층으로 가려 한다. 엘리베이터의 정원은 무한이다. 즉 어느 순간에든 엘리베이터를 이용하는 사람 수에는 제한이 없다. 모든 tit_i는 서로 다르다. 승객은 엘리베이터가 00층에 있는 동안 항상 탄다.

엘리베이터는 다음 알고리즘을 따른다. 승객을 태워 보내라는 명령을 내릴 때까지 00층에서 문을 열고 기다리다가, 가야 할 가장 높은 층(현재 엘리베이터에 탄 모든 승객의 aia_i 중 최댓값)으로 이동하면서 승객을 내려 주고, 다시 주차장으로 돌아온다. 엘리베이터는 다음 층으로(또는 이전 층으로) 이동하는 데 11만큼의 시간이 걸린다. 문을 여닫는 시간과 승객이 타고 내리는 시간은 무시할 수 있다. 00 시각에 엘리베이터는 00층에 있다.

모두를 내려 준 뒤 엘리베이터가 00층으로 돌아오는 시각을 최소로 만들고 싶다.

입력

입력에는 하나 이상의 테스트 케이스가 들어 있다.

각 테스트 케이스의 첫 줄에는 정수 nn이 주어진다. nn은 승객 수이다 (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5).

다음 nn개 줄에는 각각 공백으로 구분된 두 정수 tit_i와 aia_i가 주어진다. tit_i는 ii번째 승객이 엘리베이터에 오는 시각이고 aia_i는 ii번째 승객의 목적지 층이다 (1≤ti,ai≤1091 \le t_i, a_i \le 10^9).

한 테스트 케이스의 모든 tit_i는 서로 다르고, 승객은 tit_i가 커지는 순서로 입력에 나타난다.

모든 테스트 케이스의 nn 값의 합은 2⋅1052 \cdot 10^5을 넘지 않는다. 테스트 케이스는 별도의 구분자 없이 연달아 주어진다.

출력

각 테스트 케이스마다 모든 승객을 내려 준 뒤 엘리베이터가 돌아오는 시각의 최솟값을 정수 하나로 출력한다.

예제1

  1. 예제 1

    입력
    3
    1 9
    2 6
    15 6
    3
    1 9
    2 6
    15 8
    
    예상 출력
    31
    33