#P15984. [Roi2012 Team]拖把

    ID: 15195 传统题 1000ms 256MiB 尝试: 3 已通过: 1 难度: 7 上传者: 标签>CF2200计算几何扫描线数据结构排序

[Roi2012 Team]拖把

题面描述

Roma 买了一把拖把。拖把的清洁部分原本是一个 w×hw\times h 的矩形,但运输过程中一个角折断了。现在它的边界由矩形的两条相邻完整边、另外两条边的部分片段,以及连接这些片段端点的一条折线组成。

Roma 住在一个很大的矩形房间中。他让破损拖把沿着墙从房间一边拖到另一边,拖把一直贴着墙。最终,破损的角落位于房间角落,使得对应矩形条带的一部分地面没有被拖到。

下图展示了拖把损坏和拖动后的脏区域示意。

拖把示意图

Roma 认为,所有某个时刻被拖把清洁部分覆盖到的点都被拖干净了。请计算该条带中仍然脏着的部分面积。可以认为房间尺寸远大于拖把清洁部分尺寸。

输入格式

第一行包含两个整数 w,hw,h2w,h1052\le w,h\le 10^5),表示拖把损坏前清洁部分的尺寸。

第二行包含整数 nn2n1052\le n\le 10^5),表示连接拖把相邻边的折线顶点数。

接下来 nn 行,每行两个整数 xi,yix_i,y_i。除 y1=hy_1=hxn=wx_n=w 外,满足 1xi<w,1yi<h1\le x_i<w,1\le y_i<h。折线没有自交或自切。

输入坐标使得 Roma 拖动拖把所贴的墙对应直线 y=hy=h

输出格式

输出未拖干净部分的面积。答案允许绝对或相对误差不超过 10610^{-6}

样例输入

9 7
9
3 7
4 5
5 6
4 4
5 2
6 4
7 2
8 3
9 2

样例输出

18.0