충전하기

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

요약
^1번 행동마다 최소 전력을 만족하는 가장 작은 빈 포트를 배정하고, 2번 행동에서는 그 포트에 꽂힌 시점을 출력한다.
난이도

보통10점 중 7점

유형
유니온 파인드, 구현
정답자
아직 제출이 없습니다

문제

동우는 다양한 전자기기를 사용한다. 수많은 전자기기의 충전기를 모두 들고 다니는 것이 번거로웠던 동우는 NN개의 포트가 있는 멀티 포트 충전기를 장만했다. 동우의 멀티 포트 충전기는 특이하여 각 포트별로 출력해주는 전력이 다르다. 구체적으로 동우가 구매한 멀티 포트 충전기의 ii번 포트는 ii만큼의 전력을 출력해준다.

동우는 다양한 전자기기로 작업을 하면서 총 QQ번 충전기에 꽂거나 뽑을 것이다. 구체적으로 동우가 하는 행동은 22가지로 아래와 같은 입력으로 주어진다.

  • 1 ii: 최소 전력이 ii인 전자기기를 ii번 포트에 꽂는다. 만약 ii번 포트에 전자기기가 꽂혀 있다면, 현재 남아 있는 최소 전력 이상의 포트 중 가장 전력이 작은 포트에 기기를 꽂는다. 만약 남아 있는 모든 포트가 최소 전력 미만이라면, 기기를 꽂지 않는다.
  • 2 ii: ii번 포트에 기기가 꽂혀 있다면 기기를 뽑는다.

이때, 각 행동에 대해 다음을 출력하라.

  • 1번 행동: 성공적으로 전자기기를 꽂았다면 포트의 번호를 출력하며, 꽂지 않았다면 -1을 출력한다.
  • 2번 행동: 기기가 꽂혀 있었다면 몇 번째 행동에서 꽂힌 기기인지 출력하며, 꽂혀 있지 않았다면 -1을 출력한다. 여기서 몇 번째 행동인지는 1번과 2번을 행동을 합쳐서 센다.

입력

첫 번째 줄에 포트의 수 N(1≤N≤106)N(1\leq N\leq 10^{6})과 행동의 수 Q(1≤Q≤106)Q(1\leq Q\leq 10^{6})가 주어진다.

두 번째 줄부터 QQ줄에 걸쳐 동우가 하는 행동의 타입 t(t∈1,2)t(t\in\\{ 1,2 \\})와 포트 번호 또는 최소 전력을 의미하는 정수 i(1≤i≤N)i(1\leq i\leq N)가 공백으로 구분되어 주어진다.

출력

각각의 행동이 주어질 때마다 행동의 결과를 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    2 11
    1 2
    1 2
    1 1
    2 1
    2 2
    1 1
    1 1
    1 1
    2 1
    1 2
    1 1
    
    예상 출력
    2
    -1
    1
    3
    1
    1
    2
    -1
    6
    -1
    1
    
  2. 예제 2

    입력
    6 13
    1 3
    1 5
    1 3
    1 3
    1 3
    1 1
    1 6
    2 5
    2 6
    1 2
    1 1
    1 1
    1 1
    
    예상 출력
    3
    5
    4
    6
    -1
    1
    -1
    2
    4
    2
    5
    6
    -1