만드는 중입니다

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

튕기는 공 따라가기

시간 제한2초메모리 제한512 MB

요약
볼록 장애물이 있는 화면에서 대포가 쏜 n개의 공이 튕기며 장애물을 칠 때마다 값이 줄어듭니다. 각 장애물의 최종 값을 구합니다.
난이도

보통10점 중 6점

유형
시뮬레이션, 기하
정답자
아직 제출이 없습니다

문제

휴대폰으로 내려받을 수 있는 여러 게임이 다음 아이디어의 변형이다. 화면에는 안에 숫자가 적힌 여러 볼록 도형이 가득하다. 화면 아래쪽에는 대포가 있어서 방아쇠를 당기면 공 nn개를 빠르게 연속으로 발사한다. 각 공은 앞 공이 나간 뒤 1초 뒤에 대포를 떠난다. 대포는 좌우로 회전해서 공의 방향을 정한다. 공은 대포를 떠난 뒤 도형과 벽에 튕기며 움직이다가 화면 아래쪽에 다시 닿으면 사라진다. 공끼리는 서로 영향을 주지 않는다. 두 공이 겹치면 그냥 서로 통과한다.

공이 도형에 한 번 맞을 때마다 도형 안의 숫자가 1씩 줄어든다. 도형의 숫자가 0에 도달하는 순간 도형은 사라지고, 방금 그 도형에 맞은 공은 튕기지 않고 그대로 나아간다. 그림 D.1을 보자. 대포 G가 왼쪽으로 45도 각도를 향하면 모든 공은 G에서 출발하는 지그재그 경로를 따른다. 직사각형 도형은 공 하나가 두 번까지 맞을 수 있는데, 한 번은 왼쪽에서, 한 번은 오른쪽에서 맞는다. 이 도형이 왼쪽과 오른쪽을 합해 10번 맞으면 도형이 사라지고, 화면의 모든 공의 경로가 그에 맞춰 바뀐다.

실제 게임의 목표는 도형을 가능한 한 빨리 모두 없애는 것이다. 여기서는 대포 각도를 고정하고 발사한 공 한 묶음의 결과만 본다. 도형들의 위치, 각 도형 안의 숫자, 발사하는 공의 수, 대포의 방향이 주어지면 각 도형의 최종 숫자를 구하시오.

입력

입력은 ll을 제외하고 모두 정수인 일곱 값 ww hh nn mm ll rr ss로 시작한다. 앞의 네 값은 화면의 너비와 높이(1≤w,h≤10001 \le w, h \le 1000), 대포가 발사하는 공의 수(1≤n≤5001 \le n \le 500), 화면에 있는 도형의 수(1≤m≤201 \le m \le 20)이다. 나머지 세 값은 화면 아래쪽 가장자리에서 대포의 위치(0≤l≤w0 \le l \le w)와 방향(−10≤r≤10-10 \le r \le 10, 1≤s≤101 \le s \le 10)을 나타낸다. 방향은 그림 D.2와 같다.

이어서 도형 mm개를 설명하는 mm개의 줄이 주어진다. 각 줄은 도형의 변의 개수 pp(3≤p≤103 \le p \le 10)로 시작하고, 이어서 변 끝점의 x-y 좌표 pp개가 시계 방향 순서로 주어진다. 그 뒤에 도형 안의 숫자 qq(1≤q≤10001 \le q \le 1000)가 온다. 길이의 단위는 센티미터이고, 공은 초당 1센티미터로 움직인다. 두 도형(화면의 경계 포함)은 서로 교차하지 않으며 한 점에서도 만나지 않는다. 도형은 숫자가 0 이하가 되는 순간 사라진다. 도형이 사라지기 10−710^{-7}초 전에 공이 도형에 닿으면, 그 공은 도형이 이미 사라진 것처럼 통과한다. 공이 변의 끝점에서 10−710^{-7} 이내인 곳을 맞는 일은 없으며, 모든 공은 결국 화면을 떠난다.

출력

입력 순서대로 도형 mm개의 최종 숫자를 mm개의 값으로 출력한다. 어떤 값이 음수이면 대신 0을 출력한다.

예제2

  1. 예제 1

    입력
    20 30 5 3 10 -1 1
    4 10 18 10 24 14 24 14 18 10
    3 5 23 1 25 5 27 7
    4 16 22 16 28 19 28 19 19 8
    
    예상 출력
    0 2 3
    
  2. 예제 2

    입력
    20 30 10 3 10.1 -1 1
    4 10 18 10 24 14 24 14 18 10
    3 5 23 1 25 5 27 7
    4 16 22 16 28 19 28 19 19 8
    
    예상 출력
    0 0 1