만드는 중입니다

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

거스름돈

면접 대비

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

요약
거스름돈을 줄 때마다 보유한 지폐로 장수가 가장 적도록 골라, 큰 액면부터 출력합니다.
난이도

보통10점 중 4점

유형
그리디, 구현
정답자
아직 제출이 없습니다

문제

비트랜드의 소매 체인 "Baxima"는 매장을 현대화하고 스마트 계산대를 설치하려고 한다. 스마트 계산대의 구성 요소 중 하나는 비트(비트랜드의 화폐)로 거스름돈을 자동으로 내주는 로봇이다.

비트 지폐의 액면가는 1,2,4,8,16,32,64,128,256,512,10241, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024이다.

하루가 시작될 때 계산대는 비어 있다. 이후 모든 거래가 기록된다. 계산대에 넣는 지폐의 액면가가 기록되는 것이다. 필요한 것은 고객마다 거스름돈을 어떻게 고를지 계산하는 소프트웨어다.

고객에게 거스름돈으로 줄 지폐 수가 가장 적도록, 로봇이 어떤 액면가의 지폐를 내줘야 하는지 구하는 프로그램을 작성하라.

입력

첫 줄에 거래 수 TT가 주어진다. 이어지는 TT개의 줄에는 정수 tit_i가 하나씩 주어진다.

  • ti>0t_i > 0이면 tit_i는 비트 지폐의 액면가 중 하나이며, 이 액면가의 지폐를 계산대에 넣는다는 뜻이다.
  • ti<0t_i < 0이면 고객에게 거스름돈을 내줘야 한다는 뜻이며, 계산대에서 해당하는 지폐를 꺼내야 한다.

출력

거스름돈을 내주는 거래(ti<0t_i < 0)마다 거스름돈으로 쓴 지폐의 액면가를 큰 것부터 작은 순서로 한 줄에 출력한다. 로봇은 지폐 수가 가장 적도록 돈을 내줘야 한다.

계산대에는 거스름돈을 내주기에 충분한 지폐가 항상 있다고 가정한다.

제한

1≤T≤10001 ≤ T ≤ 1000

−106≤ti<0-10^6 ≤ t_i < 0 또는 ti∈{1,2,4,8,16,32,64,128,256,512,1024}t_i ∈ \{1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024\}.

예제1

  1. 예제 1

    입력
    10
    8
    8
    16
    4
    4
    -20
    4
    -16
    1
    -5
    
    예상 출력
    16 4
    8 8
    4 1