跳远

成绩 0 开启时间 2013年02月21日 星期四 23:02
折扣 0.8 折扣时间 2013年02月28日 星期四 23:02
允许迟交 关闭时间 2013年02月28日 星期四 23:02
输入文件 jump.in 输出文件 jump.out

【问题描述】
     在水平面上整齐的放着n个正三角形,相邻两个三角形的底边之间无空隙,如下图所示。一个小孩子想站在某个三角形i的顶端,跳到三角形j的顶端上(i<j)。他总是朝着斜向45度的方向起跳,且初始水平速度v不超过一个给定值v0。在跳跃过程中,由于受到重力作用(忽略空气阻力),小孩子将沿着抛物线行进,水平运动方程为x = x0 + vt,竖直运动方程为y = y0 + vt – 0.5gt2,运动轨迹是一条上凸的抛物线。取g=10.0,(x0, y0)是起跳点

请编程求出他从每个位置起跳能到达的最远三角形的编号。注意:跳跃过程中不许碰到非起点和终点的其他三角形。







【输入格式】
     输入文件第一行为两个正整数 n , v0 (3 ≤ n ≤ 10 , 1 ≤ v 0 ≤ 100) ,表示三角形的个数和最大水平初速度。 第二行有 n 个正整数 li (1 ≤ li ≤ 20) ,表示从左到右各个三角形的边长。

【输出格式】
    输出文件仅一行,包括 n-1 个数, n-1 个数之间用一个空格隔开,表示从三角形 1 , 2 , 3…n-1 的顶点出发能到达的最右的三角形编号(从i的顶点出发到达的最右三角形为j同时意味着从i可以到达i+1,i+2,……j-1)。如果从某三角形出发无法达到任何三角形,相应的数为 0 。

【输入输出样例】
 
输入
jump.in
3 5
6 4 2
输出
jump.out
2 3