二次元平面上にn個の円状の光源が配置されている。ある光源が光を受けると、下図のようにその光源の中心点から扇状に光が放出される。
光源の中心点は(x,y)、半径はrで表される。
光となる扇形は角βを中心に-θ/2, +θ/2の方向へ対称に広がり、その半径はαである。
光源の円が扇型の光に完全に覆われるとき、光源はその光を受けたとみなされる。光源から放出される光の強さは、受けた光の強さの合計となる。ただし、放出される光の強さには上限があり、上限を超えた場合、光の強さは上限値と同じになる。なお、ある光や光源によって光が遮られることはない。
ある地点に存在する光源を目的光源とする。目的光源では光が放出されず、受ける光の強さに制限はない。 あなたは座標(0,0)から、ある強さの扇形の光を、任意の方向に1度だけ放出することができる。目的光源が受ける光の強さの合計の最大値を求めるプログラムを作成せよ。ただし、全ての光源において、放出された光が元の光源に戻るような入力データは与えられないと仮定してよい。また、この問題では、領域の境界からの距離が0.000001以内の場合、領域上とみなすことにする。
n θ0 α0 power x1 y1 r1 θ1 α1 β1 maxpower1 . . xn yn rn θn αn βn maxpowern xn+1 yn+1 rn+1
1行目には目的光源を除く光源の数nが与えられる。
2行目に最初に光を放出する座標(0,0)の情報、3行目からn+2行目に目的でない光源の情報、n+3行目に目的光源の情報がそれぞれ空白区切りで与えられる。
各情報に対して、xi,yiは光源の中心点の座標、riは光源の半径、θiは光が広がる角度、αiは光の半径、βiは光が向かう方向を表す。2行目のpowerは最初に放出される光の強さ、3行目からn+2行目のmaxpoweriは放出される光の上限を表す。
光の方向βiはx軸の正の向きから反時計回りに回転し、各角度の単位は度とする。
入力は以下の条件を満たす。
目的光源を全て囲うような光の強さの合計の最大値を1行に出力せよ。
1 90 10 20 3 3 1 90 10 315 10 6 0 1
30
2 90 10 10 -3 0 1 45 10 90 10 -6 0 2 30 3 180 10 -9 0 1
10