시소 배열

면접 대비

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

요약
배열 뒤에 원소를 추가하고 합이 더 작은 쪽 절반을 삭제하는 질의를 처리하며, 삭제된 합과 최종 배열을 출력한다.
난이도

보통10점 중 5점

유형
큐, 투 포인터, 누적 합, 구현
정답자
아직 제출이 없습니다

문제

비어 있는 배열 AA가 있다. 당신은 다음 두 종류의 질의를 총 QQ개 처리해야 한다.

  • 1 xx: 배열의 가장 뒤에 정수 xx를 삽입한다.
  • 2: 현재 배열의 길이를 NN이라 하자. 배열을 앞 ⌊N2⌋\left\lfloor{N\over 2}\right\rfloor개의 원소와 뒤 ⌈N2⌉\left\lceil{N\over 2}\right\rceil개의 원소 두 부분으로 나눈 후, 원소들의 합이 더 작은 부분을 배열에서 삭제한다. 만약 두 부분의 합이 같을 경우, 앞 ⌊N2⌋\left\lfloor{N\over 2}\right\rfloor개의 원소를 삭제한다. 이후 삭제된 부분의 원소의 합을 출력한다. 이 형식의 질의는 배열의 길이가 22 이상일 때만 주어진다.

모든 질의를 올바르게 처리하고, 그 후 배열 AA에 저장된 모든 원소를 차례대로 출력하는 프로그램을 작성하여라.

입력

첫 번째 줄에 질의의 수 QQ가 주어진다. (3≤Q≤500 000)(3\le Q\le 500\ 000)

두 번째 줄부터 QQ개의 줄에 걸쳐 질의가 아래와 같은 형식 중 하나로 주어진다.

  • 1 xx: (1≤x≤1,000)(1\le x\le 1\\,000), xx는 정수
  • 2

2번 질의가 1번 이상 주어지며, 모든 2번 질의는 배열의 길이가 22 이상일 때 주어짐이 보장된다.

출력

각 2번 질의에 대한 답을 차례대로 각 줄에 걸쳐 출력한다. 이후 다음 줄에 모든 질의를 처리한 후 배열 AA에 저장된 모든 원소를 차례대로 출력한다.

힌트

어떤 실수 xx에 대해, ⌊x⌋\lfloor{x}\rfloor는 n≤xn \le x을 만족하는 가장 큰 정수 nn의 값으로 정의된다. 마찬가지로, ⌈x⌉\lceil{x}\rceil은 n≥xn \ge x을 만족하는 가장 작은 정수 nn의 값으로 정의된다.

예제1

  1. 예제 1

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