import sys from shapely.geometry import box, Point from shapely.ops import unary_union def solve(): # 入力を全て読み込む input_data = sys.stdin.read().split() if not input_data: return X = int(input_data[0]) Y = int(input_data[1]) N = int(input_data[2]) v_circles = [] h_circles = [] idx = 3 for _ in range(N): x = int(input_data[idx]) y = int(input_data[idx+1]) r = int(input_data[idx+2]) d = input_data[idx+3] idx += 4 # Point.bufferを用いて円を作成。 # 相対誤差 10^-6 以下を担保するため、resolutionを十分に大きく設定 (2048だと1円あたり約8000頂点) circle = Point(x, y).buffer(r, resolution=2048) if d == 'V': v_circles.append(circle) else: h_circles.append(circle) # 窓枠を定義 window = box(0, 0, X, Y) # 窓枠内の V の領域の面積 v_area = 0.0 if v_circles: # Vの円の和集合を求め、窓枠で切り取る v_union = unary_union(v_circles).intersection(window) v_area = v_union.area # 窓枠内の H の領域の面積 h_area = 0.0 if h_circles: # Hの円の和集合を求め、窓枠で切り取る h_union = unary_union(h_circles).intersection(window) h_area = h_union.area # 簡略化された式に基づく最終計算 ans = X * Y - 0.5 * v_area - 0.5 * h_area # 精度を落とさないよう、小数点以下15桁まで出力 print(f"{ans:.15f}") if __name__ == '__main__': solve()