Problem:
海苔(のり)

　
ヒバラ海の浜辺の集落では海苔の生産が盛んです。海苔はすべて長方形に成型されます。海苔を天日干しするときは、２枚の海苔を同じ敷物の上に乗せて、１枚目の上辺と２枚目の上辺が平行になるように置きます。アルバイトのゲンムさんは平行に置くことはできるのですが、まだ慣れていないため重なった部分ができてしまうことがあります。重なった部分は売り物にならないので、重なっていない部分の海苔の面積を求めておく必要があります。

同じ敷物の上に置いた２枚の海苔それぞれの左下端の位置と幅と高さが与えられたとき、重なっていない部分の海苔の面積を出力するプログラムを作成せよ。

入力

入力は以下の形式で与えられる。

$x_1$ $y_1$ $w_1$ $h_1$
$x_2$ $y_2$ $w_2$ $h_2$

１行目に１枚目の海苔の左下端の座標$x_1,y_1$ ($0 \leq x_1,y_1 \leq 1,000$)と幅と高さ$w_1,h_1$ ($1 \leq w_1,h_1 \leq 1,000$)が与えられる。２行目に２枚目の海苔の左下端の座標$x_2,y_2$ ($0 \leq x_2,y_2 \leq 1,000$)と幅と高さ$w_2,h_2$ ($1 \leq w_2,h_2 \leq 1,000$)が与えられる。入力はすべて整数で与えられる。

出力

重なっていない部分の海苔の面積を整数で１行に出力する。

入出力例

入力例１

0 0 4 5
2 2 3 6

出力例１

26

入力例２

1 2 2 1
2 0 2 2

出力例２

6

入力例３

0 0 1 1
0 0 1 1

出力例３

0

Solution in C# (judge verdict: Accepted)

using static System.Math;
using System;

public class hello
{
    public static void Main()
    {
        string[] line = Console.ReadLine().Trim().Split(' ');
        var x1 = int.Parse(line[0]);
        var y1 = int.Parse(line[1]);
        var w1 = int.Parse(line[2]);
        var h1 = int.Parse(line[3]);
        line = Console.ReadLine().Trim().Split(' ');
        var x2 = int.Parse(line[0]);
        var y2 = int.Parse(line[1]);
        var w2 = int.Parse(line[2]);
        var h2 = int.Parse(line[3]);
        var xmax = Max(x1 + w1, x2 + w2);
        var ymax = Max(y1 + h1, y2 + h2);
        var map = new bool[xmax, ymax];
        for (int i = 0; i < h1; i++)
            for (int j = 0; j < w1; j++)
                map[j + x1, i + y1] = true;
        var count = 0;
        for (int i = 0; i < h2; i++)
            for (int j = 0; j < w2; j++)
                if (map[j + x2, i + y2]) count++;
        var ans = h1 * w1 + h2 * w2 - 2 * count;
        Console.WriteLine(ans);
    }
}