题目链接:https://www.hpuoj.com/contest/16/problem/H/

Problem  Description:

单测试点时限: 1.0 秒

内存限制: 512 MB

Mo的老师给了他两个矩形,让他求两个矩形的面积并。Mo很忙没时间解决这种小case,请你帮他解决。

Input:

输入两行,每行四个整数 x,y,x1,y1 。(x,y) 是矩形左下角,(x1,y1) 是矩形的右上角. (0≤x,y,x1,y1≤1000)。

Output:

输出一个整数表示二个矩形的面积并。

Sample  Input:

0 1 2 3
1 0 3 2

Sample  Output:

7

思路:由每一个长方形都可以转化成无数个面积为1的小正方形,因此我们把两个长方形所覆盖到的小正方形都标记为1,最终就可以得出两个矩形的面积并了。

                         

My  Code:

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
#include<math.h>
#include<set>
using namespace std;
#define INF 1e9
typedef long long ll;

const int MOD = (int)1e9 + 7;

int flag[1005][1005];
int main() {

    int x,y,x0,y0;
    int min_x = 9999,min_y = 9999,max_x0 = 0,max_y0 = 0;
    for(int i = 0; i < 2; i++)
    {
        cin >> x >> y >> x0 >> y0;
        min_x = min(min_x,x);
        min_y = min(min_y,y);
        max_x0 = max(max_x0,x0);
        max_y0 = max(max_y0,y0);
        for(int j = x; j < x0; j++)///标记矩形所覆盖到的小正方块
        {
            for(int k = y; k < y0; k++)
                flag[j][k] = 1;
        }
    }
    int ans = 0;
    for(int i = min_x; i < max_x0; i++)///判断一共有多少个小正方块
    {
        for(int j = min_y; j < max_y0; j++)
        {
            if(flag[i][j] == 1)
                ans++;
        }
    }
    cout << ans << endl;
	return 0;
}