시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
물이 담긴 유리컵은 가득 찼을 때도, 완전히 비었을 때도 아닌, 그 중간 어딘가에서 가장 안정적입니다. 가득 찬 컵은 살짝만 건드려도 쉽게 넘어져 내용물을 쏟고, 빈 컵은 가벼워서 역시 쉽게 넘어집니다. 이 문제에서는 컵을 가능한 한 가장 안정적으로 만드는 물의 높이를 찾아야 합니다.
안정성은 컵의 무게중심 높이로 판단합니다. 무게중심이 낮을수록 컵은 더 안정적입니다. 무게중심은 유리와 물을 이루는 아주 많은 작은 입자들의 위치를 질량으로 가중 평균한 지점입니다. 유리는 물보다 약 2.5배 무거우므로, 같은 크기의 물 입자에 비해 유리 입자의 질량은 2.5배입니다.
모든 컵은 수직축을 중심으로 한 회전체이지만, 반지름은 높이에 따라 달라질 수 있고 유리의 두께도 일정하지 않을 수 있습니다. 컵은 다음으로 기술됩니다.
높이 x는 컵의 바닥에서부터 잰 값입니다. x=0부터 x=B까지는 유리로 꽉 찬 밑판이고, x=B부터 x=H까지는 유리가 벽을 이룹니다. 이 벽의 바깥 반지름은 R(x), 안쪽 반지름은 R(x)−T(x)이며, 두께 T(x)는 항상 수평 방향으로 잽니다. 컵에 부은 물은 유리 밑판 위에 고여 안쪽의 빈 공간을 채웁니다.
입력에는 여러 개의 컵 정보가 들어 있습니다. 각 컵은 세 줄로 주어집니다.
모든 값의 단위는 센티미터입니다. 컵 정보들의 끝은 두 개의 0으로 이루어진 줄로 표시되며, 이 줄은 처리하지 않습니다.
각 식에는 숫자 0-9, 소수점(.), 네 가지 연산자 +, -, *, /, 괄호, 그리고 소문자 x(바닥에서부터 잰 높이)만 나타납니다. 연산자는 일반적인 의미와 우선순위를 가지며, *와 /가 +와 -보다 먼저 계산됩니다.
함수는 다음을 만족합니다.
각 컵마다 정확히 다음 형식으로 한 줄을 출력합니다.
Pour L litres / W cm of water.
여기서 L은 컵을 가장 안정적으로 만들기 위해 부어야 하는 물의 양(리터)이고, W는 그때의 물 높이, 즉 컵 안쪽 바닥(유리 밑판의 윗면) 위로 채워진 물기둥의 높이(센티미터)입니다. 비어 있을 때 가장 안정적이라면 두 값 모두 0.000을 출력합니다.
L과 W는 소수점 아래 정확히 세 자리로 반올림하여 출력합니다. 모든 테스트 데이터는 L과 W의 정확한 값이 반올림 경계에 놓이지 않도록 선택되므로, 반올림한 출력값은 유일하게 정해집니다.