#icpc2013summerday3k. [icpc2013summer_day3_k]くるくるくるりん

[icpc2013summer_day3_k]くるくるくるりん

将以下文本翻译成中文,要求显示为markdown格式,不要渲染:

ヘリリンは二次元平面上における長さ$2L$の線分の形状をしている。  
ヘリリンのまわりには、線分の形状をしたいくつかの障害物が存在している。

ヘリリンは障害物に接すると体力が削られてしまう。  
完璧主義のヘリリンは無傷でゴールすることにした。

ヘリリンは以下の行動ができる。

*   平行移動
    
*   ヘリリンを表す線分の中点を中心として、反時計周りにちょうど $180 / r$ 度だけ回転する
    

ただし、二次元平面は上方向に$y$軸をとる。

ヘリリンのまわりに、2 点 S, G がある。  
始めはヘリリンの中心は点 S にあって、$x$軸に平行な状態になっている。

ヘリリンは、平行移動するのは得意だが、回転するのは不得意である。  
あなたの仕事は、ヘリリンが中心を点 S から点 G まで移動させるまでに必要な、最小の回転行動の回数を求めることである。  
移動させることができない場合は、そのことも検出せよ。

ただし、以下のことに注意せよ。

*   ヘリリンは移動しながら回転することはできない。
    
*   ヘリリンが回転する途中で障害物にぶつかりうる場合は、回転することはできない。
    
*   障害物が互いに交差していることはあり得る。
    
*   線分は十分小さい有限の太さを持つものとして扱う。最後のサンプルを見よ。

## 输入

输入是以下格式的:

> $L$ $r$  
> $sx$ $sy$  
> $gx$ $gy$  
> $n$  
> $x11$ $y11$ $x12$ $y12$  
> ...  
> $xn1$ $yn1$ $xn2$ $yn2$  

其中,$L$是ヘリリン半长;$r$是旋转角度;$(sx, sy)$是点S的坐标;$(gx, gy)$是点G的坐标;$n$是障碍物的数量;$(xi1, yi1)$和$(xi2, yi2)$是第$i$个障碍物线段的端点。

### 约束条件

输入满足以下约束条件:

*   $1 \leq n \leq 30$
    
*   $2 \leq r \leq 11$
    
*   $1 \leq L \leq 105$
    
*   输入中的坐标分量的绝对值都不超过$105$
    
*   输入中的数值都是整数
    
*   对于$i = 1, ..., n$,$(xi1, yi1) \neq (xi2, yi2)$
    
*   当ヘリリン以水平于x轴的状态放置在起始位置时,与障碍物的距离(线段与线段之间的距离)大于$10^{-3}$
    
*   对于表示障碍物线段的$li$,$1 \leq i \leq j \leq n$,使得$li$和$lj$之间的距离不超过$2L$的组合$(i, j)$最多有100个
    
*   终点不会位于障碍物上

## 输出

输出为从起始位置到终点位置移动所需的最小旋转动作次数。如果无法移动,则输出-1。

## 示例输入1

```plain
1 2
3 3
2 -1
4
1 0 1 5
0 1 4 1
0 4 6 4
5 0 5 5

示例输出1

1
  • 通过将ヘリリン旋转90度,可以通过隙缝。

示例1 示例1图像

示例输入2

1 2
3 3
2 -1
4
1 0 1 5
0 1 6 1
0 4 6 4
5 0 5 5

示例输出2

-1
  • ヘリリン被完全包围,无法到达终点。

示例2

示例输入3

1 4
3 3
7 0
5
1 0 1 5
0 1 6 1
0 4 6 4
8 0 2 5
6 0 4 2

示例输出3

3
  • 必须进行3次逆时针旋转才能通过斜线路径到达终点。

示例3 示例3图像

示例输入4

2 2
4 2
4 5
5
1 5 2 0
0 4 3 4
0 1 8 1
7 0 7 5
8 4 5 4

示例输出4

-1
  • 由于ヘリリン不能与障碍物完全接触,所以无法在缝隙处旋转并移动到终点。

示例4