本来想用线段树做的,仔细看题发现题目数据太弱了,直接用一个数组标记平面上每一个单位方格即可,水题~
/* * hdu1264/linux.cpp * Created on: 2011-9-1 * Author : ben */ #include#include #include #include #include using namespace std; const int MAX_COR = 105; bool map[MAX_COR][MAX_COR]; void work() { int t, xi, yi, xa, ya; while (true) { memset(map, false, sizeof(map)); while (true) { scanf("%d%d%d%d", &xi, &yi, &xa, &ya); if (xi == -1 && yi == -1 && xa == -1 && ya == -1) { break; } if (xi == -2 && yi == -2 && xa == -2 && ya == -2) { break; } if (xi > xa) { t = xi; xi = xa; xa = t; } if (yi > ya) { t = yi; yi = ya; ya = t; } for (int i = xi; i < xa; i++) { for (int j = yi; j < ya; j++) { map[i][j] = true; } } } t = 0; for (int i = 0; i < MAX_COR; i++) { for (int j = 0; j < MAX_COR; j++) { t += map[i][j]; } } printf("%d\n", t); if (xi == -2 && yi == -2 && xa == -2 && ya == -2) { break; } } } int main() { #ifndef ONLINE_JUDGE freopen("data.in", "r", stdin); #endif work(); return 0; }