A8059 | Cannon
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
Bertown is under siege! The attackers have blocked all the ways out and their cannon is bombarding the city. Fortunately, Berland intelligence managed to intercept the enemies' shooting plan. Let's introduce the Cartesian system of coordinates, the origin of which coincides with the cannon's position, the $Ox$ axis is directed rightwards in the city's direction, the $Oy$ axis is directed upwards (to the sky). The cannon will make $n$ more shots. The cannon balls' initial speeds are the same in all the shots and are equal to $V$ , so that every shot is characterized by only one number $alpha_{i}$ which represents the angle at which the cannon fires. Due to the cannon's technical peculiarities this angle does not exceed $45$ angles ( $π/4$ ). We disregard the cannon sizes and consider the firing made from the point $(0,0)$ .
The balls fly according to the known physical laws of a body thrown towards the horizon at an angle:
$v_{x}(t)=V·cos(alpha)$ $v_{y}(t)=V·sin(alpha) – g·t$ $x(t)=V·cos(alpha)·t$ $y(t)=V·sin(alpha)·t – g·t^{2}/2$ Think of the acceleration of gravity $g$ as equal to $9.8$ .
Bertown defends $m$ walls. The $i$ -th wall is represented as a vertical segment $(x_{i},0)-(x_{i},y_{i})$ . When a ball hits a wall, it gets stuck in it and doesn't fly on. If a ball doesn't hit any wall it falls on the ground ( $y=0$ ) and stops. If the ball exactly hits the point $(x_{i},y_{i})$ , it is considered stuck.
Your task is to find for each ball the coordinates of the point where it will be located in the end.
The balls fly according to the known physical laws of a body thrown towards the horizon at an angle:
$v_{x}(t)=V·cos(alpha)$ $v_{y}(t)=V·sin(alpha) – g·t$ $x(t)=V·cos(alpha)·t$ $y(t)=V·sin(alpha)·t – g·t^{2}/2$ Think of the acceleration of gravity $g$ as equal to $9.8$ .
Bertown defends $m$ walls. The $i$ -th wall is represented as a vertical segment $(x_{i},0)-(x_{i},y_{i})$ . When a ball hits a wall, it gets stuck in it and doesn't fly on. If a ball doesn't hit any wall it falls on the ground ( $y=0$ ) and stops. If the ball exactly hits the point $(x_{i},y_{i})$ , it is considered stuck.
Your task is to find for each ball the coordinates of the point where it will be located in the end.
输入格式
The first line contains integers $n$ and $V$ ( $1<=n<=10^{4},1<=V<=1000$ ) which represent the number of shots and the initial speed of every ball. The second line contains $n$ space-separated real numbers $alpha_{i}$ ( $0<alpha_{i}<π/4$ ) which represent the angles in radians at which the cannon will fire. The third line contains integer $m$ ( $1<=m<=10^{5}$ ) which represents the number of walls. Then follow $m$ lines, each containing two real numbers $x_{i}$ and $y_{i}$ ( $1<=x_{i}<=1000,0<=y_{i}<=1000$ ) which represent the wall’s coordinates. All the real numbers have no more than 4 decimal digits. The walls may partially overlap or even coincide.
输出格式
Print $n$ lines containing two real numbers each — calculate for every ball the coordinates of its landing point. Your answer should have the relative or absolute error less than $10^{-4}$ .
输入输出样例
输入 #1
2 10 0.7853 0.3 3 5.0 5.0 4.0 2.4 6.0 1.9
输出 #1
5.000000000 2.549499369 4.000000000 0.378324889
输入 #2
2 10 0.7853 0.3 2 4.0 2.4 6.0 1.9
输出 #2
10.204081436 0.000000000 4.000000000 0.378324889
暂无题解
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted