만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

카드 수집

시간 제한4초메모리 제한1024 MB

요약
N장의 카드를 인접한 두 장씩 합쳐 한 장으로 만들 때, 목표 카드를 얻을 수 있는지 판별하여 번호를 출력합니다.
난이도

어려움10점 중 8점

유형
분할 정복, 세그먼트 트리, 정렬
정답자
아직 제출이 없습니다

문제

JOI-kun은 카드 게임에서 카드 모으기를 좋아한다. 각 카드에는 힘(strength)과 비용(cost)을 나타내는 정수가 두 개씩 있다. 새 카드를 얻기 위해 JOI-kun은 카드 교환소에 카드 NN장을 가져간다. 카드에는 1번부터 NN번까지 번호가 붙어 있다. 카드 ii의 힘은 SiS_i이고, 비용은 ViV_i이다.

교환소에는 기계가 두 대 있다. 카드 A와 B를 첫 번째 기계에 넣으면, 힘이 A와 B의 힘 중 최댓값과 같고 비용이 A와 B의 비용 중 최댓값과 같은 카드 C를 받을 수 있다. 두 번째 기계도 같은 방식으로 동작하지만, 최댓값 대신 최솟값을 사용한다.

JOI-kun은 기계를 정확히 N−1N-1번 사용해 새 카드를 얻는다. 카드 NN장을 1번부터 NN번까지 일렬로 세운다. 그다음 다음 작업을 N−1N-1번 반복한다. 인접한 카드 두 장을 고르고, 기계 하나로 새 카드와 교환한 뒤, 새 카드를 고른 두 카드가 있던 자리에 놓는다.

N−1N-1번의 작업이 끝나면 카드 한 장이 남는다. 목표 카드 MM장의 목록 (Tj,Wj)(T_j, W_j)가 주어졌을 때, JOI-kun이 얻을 수 있는 카드를 목록에서 모두 찾아라.

입력

첫 줄에 NN과 MM이 주어진다. 다음 NN줄에는 카드 ii의 SiS_i와 ViV_i가 주어진다. 이어지는 MM줄에는 jj번째 목표 카드의 TjT_j와 WjW_j가 주어진다.

출력

JOI-kun이 얻을 수 있는 목표 카드의 번호를 오름차순으로 한 줄에 출력한다.

제한

  • 2≤N≤2000002 \le N \le 200000
  • 1≤M≤2000001 \le M \le 200000
  • 모든 ii에 대해 1≤Si≤1091 \le S_i \le 10^9
  • 모든 ii에 대해 1≤Vi≤1091 \le V_i \le 10^9
  • 모든 jj에 대해 1≤Tj≤1091 \le T_j \le 10^9
  • 모든 jj에 대해 1≤Wj≤1091 \le W_j \le 10^9
  • 주어지는 값은 모두 정수이다.

예제3

  1. 예제 1

    입력
    5 3
    1 3
    2 2
    4 4
    1 3
    1 1
    2 3
    2 1
    4 4
    
    예상 출력
    1 3
    
  2. 예제 2

    입력
    2 2
    1 1
    2 2
    1 2
    2 1
    
    예상 출력
  3. 예제 3

    입력
    8 8
    5 2
    4 4
    1 3
    7 8
    3 1
    8 7
    6 5
    2 6
    1 4
    7 2
    8 8
    3 1
    5 6
    2 7
    6 3
    2 5
    
    예상 출력
    3 4 5 8