UVA114 Simulation Wizardry

题目描述

仿真是计算机科学中涉及计算机发展的一个重要应用领域。提供洞察现实世界事件的模型。有很多种模拟,包括(和当然不限于)离散事件模拟和时钟驱动模拟。模拟通常涉及为了开发一种实用的方法,对观察到的行为进行近似。这个问题涉及到一个简单的弹球机的模拟。在弹球机中,一个钢球绕着一个表面滚动,撞击各种物体(保险杠)和累积点,直到球“消失”从表面。你要写一个模拟理想化弹球机的程序。这台机器有一个平板有障碍物的表面(保险杠和墙壁)。表面建模为M×N网格原点在左下角。每个保险杠占用一个网格点。网格在边缘的位置表面是墙。球在网格上一次发射(出现),一个初始位置,方向和生命。在这个模拟中,所有位置都是积分的,球的方向是:向上、向下、向左或正确的。球在网格周围弹跳,撞到保险杠(积累点)和墙壁(积累点)。不添加任何点)。通过撞击一个给定的保险杠累积的点数是在那个保险杠上。所有球的速度是每个时间步一个网格空间。一个球在在保险杠或墙网格点顶部移动的时间步。一次撞击会导致球向右(顺时针)旋转90度以“反弹”,而不在障碍物上移动。并且不改变位置(只有方向会因反弹而改变)。注意,通过这个沿着墙壁滑动的定义并不构成“撞击”墙壁。球的寿命表示球在从表面。对于球移动的每个网格步,球使用一个寿命单位。它还使用一些寿命单位对于它撞击的每个保险杠或墙。一次撞击所使用的寿命是保险杠或墙壁的成本。作为只要球碰到保险杠时有一个正的寿命,它就会得到保险杠的满分。注意,一个有生命周期的球在下一个动作中会“死亡”,因此不能获得在最后一个动作中撞到保险杠。一旦寿命为非正值(小于或等于零),球不见了,比赛继续进行下一个球。

输入格式

输出格式