はまやんはまやんはまやん

hamayanhamayan's blog

Rectangle Cutting [AtCoder Beginner Contest 130 C]

https://atcoder.jp/contests/abc130/tasks/abc130_c

解説

https://atcoder.jp/contests/abc130/submissions/6000248

ABC300点問題なので、なるべく単純に考えることにする。
この問題はある種の構築問題である。
構築問題の典型テクとして「理論値の最大値を実はいつも達成可能」というのがある。
今回もそうで、小さい方の面積の最大値の理論値は、全体の面積の半分である。
これはある一点が与えられたら、対角線の交点をもう一点とする直線を作れば、二等分線が作れる。
 
そのため、1番目の答えは面積の半分を常に答えればいい。
2番目の答えは、対角線の交点が与えられた点であれば、どんな直線でも二等分になるので、1。
そうでないなら、対角線の交点を通らない直線はだめなので、0。

int W, H, x, y;
//---------------------------------------------------------------------------------------------------
void _main() {
	cin >> W >> H >> x >> y;

	double ans1 = 1.0 * W * H / 2;
	int ans2 = 0;
	if (x * 2 == W and y * 2 == H) ans2 = 1;

	printf("%.6f %d\n", ans1, ans2);
}