최고의 팀

시간 제한2초메모리 제한128 MB

요약
나이와 서로 다른 실력을 가진 N명의 선수가 주어지고, 실력 순으로 인접한 선수끼리는 같은 팀에 넣을 수 없다. 나이 상한 A와 인원 상한 K가 주어진 T개의 질의마다 최대 실력 합을 구한다.
난이도

어려움10점 중 8점

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

문제

여러 대회 각각에 대해 가장 강한 팀을 뽑아야 한다. 사용할 수 있는 선수는 NN명이며, 각 선수에게는 나이와 실력이 주어진다. 팀의 강함은 그 팀에 속한 모든 선수의 실력의 합과 같다.

단, 실력이 비슷한 두 선수는 같은 팀에 넣을 수 없다. 서로 방해가 되어 제대로 협력하지 못하기 때문이다. 두 선수의 실력이 비슷하다는 것은, 그 둘의 실력 값 사이에 실력이 있는 다른 선수가 존재하지 않는다는 뜻이다. 모든 선수의 실력 값이 서로 다르므로, 이는 곧 두 선수가 전체 NN명을 실력 순으로 정렬했을 때 서로 이웃함을 의미한다.

팀은 TT개의 대회에 대해 각각 뽑는다. 각 대회에는 두 가지 제한이 있다.

  • 나이 제한 AA: 뽑는 모든 선수의 나이는 AA 이하여야 한다.
  • 인원 제한 KK: 팀의 선수 수는 KK명 이하여야 한다.

각 대회는 서로 독립적이므로, 한 선수가 여러 대회에 참여할 수 있다. 이웃 관계(실력이 비슷한 관계)는 특정 대회에서 어떤 선수에게 참가 자격이 있는지와 무관하게, 항상 전체 NN명을 정렬한 목록을 기준으로 정해진다는 점에 유의하라.

각 대회에 대해, 뽑을 수 있는 가장 강한 팀의 강함(실력의 총합)을 구하여라.

입력

첫째 줄에 선수의 수 NN이 주어진다.

다음 NN개의 줄에는 각각 두 정수 Agei\text{Age}_i와 Skilli\text{Skill}_i가 공백으로 구분되어 주어지며, 이는 ii번째 선수의 나이와 실력이다.

그다음 줄에는 대회의 수 TT가 주어진다.

다음 TT개의 줄에는 각각 두 정수 AiA_i와 KiK_i가 주어지며, 이는 ii번째 대회의 나이 제한과 인원 제한이다.

출력

각 대회에 대해, 뽑을 수 있는 가장 강한 팀의 강함(실력의 총합)을 대회가 주어진 순서대로 한 줄에 하나씩 출력한다.

뽑을 수 있는 선수가 하나도 없으면 0을 출력한다. 답이 매우 클 수 있으므로 64비트 정수 자료형을 사용해야 한다.

제한

  • 1≤N≤300 0001 \le N \le 300\,000
  • 1≤T≤300 0001 \le T \le 300\,000
  • 1≤Agei, Skilli≤1091 \le \text{Age}_i,\ \text{Skill}_i \le 10^9
  • 모든 선수의 실력 값은 서로 다르다.

설명

예제에서 선수들을 실력 순으로 정렬하면 (입력 순번 기준으로) 6,7,3,4,1,2,56, 7, 3, 4, 1, 2, 5의 순서가 된다. 따라서 실력이 비슷하여 같은 팀에 들어갈 수 없는 선수 쌍은 (6,7),(7,3),(3,4),(4,1),(1,2),(2,5)(6,7), (7,3), (3,4), (4,1), (1,2), (2,5)이다.

  • 1번 대회 (A=20A=20, K=3K=3): 가장 강한 팀은 선수 {1,3,6}\{1, 3, 6\}이며 실력의 합은 21+19+5=4521 + 19 + 5 = 45이다.
  • 2번 대회 (A=50A=50, K=2K=2): 가장 강한 팀은 선수 {1,5}\{1, 5\}이며 실력의 합은 21+50=7121 + 50 = 71이다.
  • 3번 대회 (A=99A=99, K=5K=5): 가장 강한 팀은 선수 {1,3,5,6}\{1, 3, 5, 6\}이며 실력의 합은 21+19+50+5=9521 + 19 + 50 + 5 = 95이다.
  • 4번 대회 (A=10A=10, K=2K=2): 모든 선수의 나이가 1010보다 많으므로 팀을 구성할 수 없고, 답은 00이다.

예제3

  1. 예제 1

    입력
    7
    17 21
    24 36
    14 19
    27 20
    21 50
    18 5
    33 7
    4
    20 3
    50 2
    99 5
    10 2
    
    예상 출력
    45
    71
    95
    0
    
  2. 예제 2

    입력
    1
    5 100
    3
    5 1
    4 1
    10 1
    
    예상 출력
    100
    0
    100
    
  3. 예제 3

    입력
    3
    1 10
    100 20
    1 30
    2
    5 2
    5 1
    
    예상 출력
    40
    30