#include <stdio.h>
#include <math.h>   // fabs() を使うために必要
 
typedef struct {
    double x;
    double y;
} Point;
 
Point scan_point(int n);            // 座標を読み取り、読み取った座標を表示して返す
double area_of(Point p1, Point p2);
double circumference_of(Point p1, Point p2);
 
int main(void) {
    Point p1, p2;
 
    printf("左上隅と右下隅の座標を入力してください。\n");  
    // 注意: プログラムはここで入力を待ちます。プロンプト行は出力しませんが、
    // 入力後に座標を "(%.2f, %.2f)" の形式で1回だけ表示します。
    p1 = scan_point(1);
    p2 = scan_point(2);
 
    double area = area_of(p1, p2);
    double circum = circumference_of(p1, p2);
 
    printf("周囲の長さ:%.2f\n", circum
);  
    return 0;
}
 
Point scan_point(int n) {
    Point p;
    // ユーザに分かるように簡単に入力形式だけ示す(任意)
    printf("座標%d を入力してください(例: 0 0):\n", n
);     if (scanf("%lf %lf", &p.
x, &p.
y) != 2) {         // 入力エラー時は0に初期化して戻す(簡易エラーハンドリング)
        p.x = p.y = 0.0;
    }
    // 読み取った座標を小数2桁で一度だけ表示する
    printf("座標%d (%.2f, %.2f)\n", n
, p.
x, p.
y);     return p;
}
 
double area_of(Point p1, Point p2) {
    double width 
= fabs(p2.
x - p1.
x);     double height 
= fabs(p2.
y - p1.
y);     return width * height;
}
 
double circumference_of(Point p1, Point p2) {
    double width 
= fabs(p2.
x - p1.
x);     double height 
= fabs(p2.
y - p1.
y);     return 2.0 * (width + height);
}
 
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+ICAgLy8gZmFicygpIOOCkuS9v+OBhuOBn+OCgeOBq+W/heimgQoKdHlwZWRlZiBzdHJ1Y3QgewogICAgZG91YmxlIHg7CiAgICBkb3VibGUgeTsKfSBQb2ludDsKClBvaW50IHNjYW5fcG9pbnQoaW50IG4pOyAgICAgICAgICAgIC8vIOW6p+aomeOCkuiqreOBv+WPluOCiuOAgeiqreOBv+WPluOBo+OBn+W6p+aomeOCkuihqOekuuOBl+OBpui/lOOBmQpkb3VibGUgYXJlYV9vZihQb2ludCBwMSwgUG9pbnQgcDIpOwpkb3VibGUgY2lyY3VtZmVyZW5jZV9vZihQb2ludCBwMSwgUG9pbnQgcDIpOwoKaW50IG1haW4odm9pZCkgewogICAgUG9pbnQgcDEsIHAyOwoKICAgIHByaW50Zigi5bem5LiK6ZqF44Go5Y+z5LiL6ZqF44Gu5bqn5qiZ44KS5YWl5Yqb44GX44Gm44GP44Gg44GV44GE44CCXG4iKTsKCiAgICAvLyDms6jmhI86IOODl+ODreOCsOODqeODoOOBr+OBk+OBk+OBp+WFpeWKm+OCkuW+heOBoeOBvuOBmeOAguODl+ODreODs+ODl+ODiOihjOOBr+WHuuWKm+OBl+OBvuOBm+OCk+OBjOOAgQogICAgLy8g5YWl5Yqb5b6M44Gr5bqn5qiZ44KSICIoJS4yZiwgJS4yZikiIOOBruW9ouW8j+OBpzHlm57jgaDjgZHooajnpLrjgZfjgb7jgZnjgIIKICAgIHAxID0gc2Nhbl9wb2ludCgxKTsKICAgIHAyID0gc2Nhbl9wb2ludCgyKTsKCiAgICBkb3VibGUgYXJlYSA9IGFyZWFfb2YocDEsIHAyKTsKICAgIGRvdWJsZSBjaXJjdW0gPSBjaXJjdW1mZXJlbmNlX29mKHAxLCBwMik7CgogICAgcHJpbnRmKCLpnaLnqY3vvJolLjJmXG4iLCBhcmVhKTsKICAgIHByaW50Zigi5ZGo5Zuy44Gu6ZW344GV77yaJS4yZlxuIiwgY2lyY3VtKTsKCiAgICByZXR1cm4gMDsKfQoKUG9pbnQgc2Nhbl9wb2ludChpbnQgbikgewogICAgUG9pbnQgcDsKICAgIC8vIOODpuODvOOCtuOBq+WIhuOBi+OCi+OCiOOBhuOBq+ewoeWNmOOBq+WFpeWKm+W9ouW8j+OBoOOBkeekuuOBme+8iOS7u+aEj++8iQogICAgcHJpbnRmKCLluqfmqJklZCDjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTvvIjkvos6IDAgMO+8iTpcbiIsIG4pOwogICAgaWYgKHNjYW5mKCIlbGYgJWxmIiwgJnAueCwgJnAueSkgIT0gMikgewogICAgICAgIC8vIOWFpeWKm+OCqOODqeODvOaZguOBrzDjgavliJ3mnJ/ljJbjgZfjgabmiLvjgZnvvIjnsKHmmJPjgqjjg6njg7zjg4/jg7Pjg4njg6rjg7PjgrDvvIkKICAgICAgICBwLnggPSBwLnkgPSAwLjA7CiAgICB9CiAgICAvLyDoqq3jgb/lj5bjgaPjgZ/luqfmqJnjgpLlsI/mlbAy5qGB44Gn5LiA5bqm44Gg44GR6KGo56S644GZ44KLCiAgICBwcmludGYoIuW6p+aomSVkICglLjJmLCAlLjJmKVxuIiwgbiwgcC54LCBwLnkpOwogICAgcmV0dXJuIHA7Cn0KCmRvdWJsZSBhcmVhX29mKFBvaW50IHAxLCBQb2ludCBwMikgewogICAgZG91YmxlIHdpZHRoID0gZmFicyhwMi54IC0gcDEueCk7CiAgICBkb3VibGUgaGVpZ2h0ID0gZmFicyhwMi55IC0gcDEueSk7CiAgICByZXR1cm4gd2lkdGggKiBoZWlnaHQ7Cn0KCmRvdWJsZSBjaXJjdW1mZXJlbmNlX29mKFBvaW50IHAxLCBQb2ludCBwMikgewogICAgZG91YmxlIHdpZHRoID0gZmFicyhwMi54IC0gcDEueCk7CiAgICBkb3VibGUgaGVpZ2h0ID0gZmFicyhwMi55IC0gcDEueSk7CiAgICByZXR1cm4gMi4wICogKHdpZHRoICsgaGVpZ2h0KTsKfQo=