튕기는 공 따라가기
시간 제한2초메모리 제한512 MB
볼록 장애물이 있는 화면에서 대포가 쏜 n개의 공이 튕기며 장애물을 칠 때마다 값이 줄어듭니다. 각 장애물의 최종 값을 구합니다.
문제
휴대폰으로 내려받을 수 있는 여러 게임이 다음 아이디어의 변형이다. 화면에는 안에 숫자가 적힌 여러 볼록 도형이 가득하다. 화면 아래쪽에는 대포가 있어서 방아쇠를 당기면 공 개를 빠르게 연속으로 발사한다. 각 공은 앞 공이 나간 뒤 1초 뒤에 대포를 떠난다. 대포는 좌우로 회전해서 공의 방향을 정한다. 공은 대포를 떠난 뒤 도형과 벽에 튕기며 움직이다가 화면 아래쪽에 다시 닿으면 사라진다. 공끼리는 서로 영향을 주지 않는다. 두 공이 겹치면 그냥 서로 통과한다.
공이 도형에 한 번 맞을 때마다 도형 안의 숫자가 1씩 줄어든다. 도형의 숫자가 0에 도달하는 순간 도형은 사라지고, 방금 그 도형에 맞은 공은 튕기지 않고 그대로 나아간다. 그림 D.1을 보자. 대포 G가 왼쪽으로 45도 각도를 향하면 모든 공은 G에서 출발하는 지그재그 경로를 따른다. 직사각형 도형은 공 하나가 두 번까지 맞을 수 있는데, 한 번은 왼쪽에서, 한 번은 오른쪽에서 맞는다. 이 도형이 왼쪽과 오른쪽을 합해 10번 맞으면 도형이 사라지고, 화면의 모든 공의 경로가 그에 맞춰 바뀐다.

실제 게임의 목표는 도형을 가능한 한 빨리 모두 없애는 것이다. 여기서는 대포 각도를 고정하고 발사한 공 한 묶음의 결과만 본다. 도형들의 위치, 각 도형 안의 숫자, 발사하는 공의 수, 대포의 방향이 주어지면 각 도형의 최종 숫자를 구하시오.
입력
입력은 을 제외하고 모두 정수인 일곱 값 로 시작한다. 앞의 네 값은 화면의 너비와 높이(), 대포가 발사하는 공의 수(), 화면에 있는 도형의 수()이다. 나머지 세 값은 화면 아래쪽 가장자리에서 대포의 위치()와 방향(, )을 나타낸다. 방향은 그림 D.2와 같다.

이어서 도형 개를 설명하는 개의 줄이 주어진다. 각 줄은 도형의 변의 개수 ()로 시작하고, 이어서 변 끝점의 x-y 좌표 개가 시계 방향 순서로 주어진다. 그 뒤에 도형 안의 숫자 ()가 온다. 길이의 단위는 센티미터이고, 공은 초당 1센티미터로 움직인다. 두 도형(화면의 경계 포함)은 서로 교차하지 않으며 한 점에서도 만나지 않는다. 도형은 숫자가 0 이하가 되는 순간 사라진다. 도형이 사라지기 초 전에 공이 도형에 닿으면, 그 공은 도형이 이미 사라진 것처럼 통과한다. 공이 변의 끝점에서 이내인 곳을 맞는 일은 없으며, 모든 공은 결국 화면을 떠난다.
출력
입력 순서대로 도형 개의 최종 숫자를 개의 값으로 출력한다. 어떤 값이 음수이면 대신 0을 출력한다.