재잘거리는 시냇물
면접 대비시간 제한1초메모리 제한128 MB
스트림 목록에서 분기와 합류가 일어날 때 흐름을 나누거나 합치며 시뮬레이션하고, 마지막에 각 강의 흐름을 반올림해 출력한다.
문제
산비탈을 따라 여러 개의 시냇물이 흘러내린다. 산비탈은 바위가 많아 시냇물은 여러 번 갈라졌다가 다시 합쳐진다. 산기슭에 이르면 몇 개의 시냇물이 강이 되어 흘러나온다. 각 강에 얼마만큼의 물이 흐르는지 계산하여라.
어떤 높이에서든 개의 시냇물이 있으며, 왼쪽부터 오른쪽으로 번부터 번까지 번호가 매겨진다. 산비탈을 내려가는 동안 하나의 시냇물이 왼쪽 갈래와 오른쪽 갈래로 갈라져 전체 시냇물의 수가 늘어날 수도 있고, 두 시냇물이 합쳐져 전체 수가 줄어들 수도 있다. 갈라지거나 합쳐진 뒤에는 왼쪽부터 오른쪽 순서로 번호를 다시 매긴다. 시냇물은 항상 최소 하나 존재하며, 개를 넘지 않는다.
입력
첫 번째 줄에는 높은 고도에서의 초기 시냇물 개수 이 주어진다. 이어지는 개의 줄에는 왼쪽부터 오른쪽 순서로 각 시냇물의 유량이 주어진다. 산비탈을 내려가면서 갈라지는 지점과 합쳐지는 지점을 여러 번 만난다.
각 갈라짐(split) 지점은 세 줄로 주어진다.
- 갈라짐을 나타내는
99 - 갈라지는 시냇물의 번호(정수)
- 갈라지는 시냇물의 유량 중 왼쪽 갈래로 흐르는 비율( 이상 이하의 정수, 퍼센트). 나머지는 오른쪽 갈래로 흐른다.
각 합쳐짐(join) 지점은 두 줄로 주어진다.
- 합쳐짐을 나타내는
88 - 바로 오른쪽 시냇물과 합쳐지는 시냇물의 번호(정수)
합쳐지는 두 시냇물의 유량은 더해진다. 마지막 갈라짐 또는 합쳐짐 지점 다음에는 입력의 끝을 나타내는 77이 한 줄에 주어진다.
출력
산기슭에 몇 개의 시냇물이 나타나며 각각의 유량이 얼마인지 구하여라. 강 번부터 번까지의 유량을 가장 가까운 정수로 반올림하여(값이 정확히 이면 올림) 공백 한 칸으로 구분해 한 줄에 출력한다.