만드는 중입니다

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

바벨탑

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

요약
운동마다 필요한 바벨 무게가 순서대로 주어질 때, 옮기는 판의 총 무게가 가장 적고 같으면 옮긴 판 개수가 가장 적은 방법을 찾습니다.
난이도

어려움10점 중 8점

유형
스택, 그리디, 시뮬레이션
정답자
아직 제출이 없습니다

문제

바벨은 헬스장에서 흔히 볼 수 있는 운동기구이다. 바벨은 바벨 봉과 바벨 원판으로 구성되며, 봉의 양쪽에 무게가 다른 원판을 여러 개 끼워 무게를 조절한다. 경기북과학고등학교 헬스장에는 2020kg 바벨 봉 하나와 55kg, 1010kg, 1515kg, 2020kg 원판이 각각 무한히 많이 비치되어 있다.

바벨을 이용해 운동할 때는 아래 규칙을 지켜야 한다.

  • 처음에는 바벨 봉에 아무것도 끼워져 있지 않으며, 바벨 사용을 마치면 다음 사람을 위해 처음 상태로 돌려놓아야 한다.
  • 가장 바깥쪽에 있는 원판만 빼거나 끼울 수 있다.
  • 바벨의 양쪽에는 항상 좌우 대칭으로 원판을 끼워야 한다.

55kg, 1010kg, 2020kg 원판을 두 개씩 끼워 만든 올바른 9090kg 바벨의 예시

당신은 바벨로 총 NN개의 운동을 순서대로 하려고 한다. 운동마다 필요한 무게가 달라서 운동 사이사이에 원판을 끼우거나 빼야 한다. 무거운 원판을 옮기는 일은 번거로우므로, 최대한 효율적인 방법으로 원판을 옮기고 싶다.

  • 옮긴 원판 무게의 총합이 작을수록 효율적이다.
  • 옮긴 원판 무게의 총합이 같으면, 옮긴 원판의 총개수가 적을수록 효율적이다.

운동의 개수와 각 운동에 필요한 무게가 순서대로 주어질 때, 원판을 옮기는 가장 효율적인 방법을 찾아라.

입력

첫 번째 줄에 운동의 개수 NN이 주어진다. (1≤N≤500 000)(1 \leq N \leq 500\,000)

두 번째 줄에 각 운동에 필요한 무게 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 공백으로 구분되어 주어진다. (20≤Ai≤109;(20 \leq A_i \leq 10^9; Ai≡0(mod10))A_i \equiv 0 \pmod{10})

출력

가장 효율적으로 원판을 옮겼을 때, 옮긴 원판의 총무게와 옮긴 원판의 총개수를 공백으로 구분하여 출력한다.

예제1

  1. 예제 1

    입력
    3
    40 60 30
    
    예상 출력
    80 12