<pre name= "code" class= "CPP" > #include <bits/stdc++.h>using namespace std; #define MAXN 505typedef pair< int, int> p;int W, H, N;int X1[MAXN], X2[MAXN], Y1[MAXN], Y2[maxn];bool fld[maxn][maxn];int d[2][4] = {{-1, 0, 1, 0}, { 0,-1, 0, 1}};int compress (int *x1, int *x2, int w) {vector<int> xs; for (int i=0, i<n; i++) for (int d=-1; d<=1; d++) {int xx1 = x1[i] + D; int xx2 = x2[i] + D; if (xx1>=1 && xx1<=w) xs.push_back (XX1); if (xx2>=1 && xx2<=w) xs.push_back (XX2); } sort (Xs.begin (), Xs.end ()); Xs.erase (Unique (Xs.begin (), Xs.end ()), Xs.end ()); for (int i=0; i<n; i++) {X1[i] = find (Xs.begin (), Xs.end (), x1[i])-Xs.begin (); X2[i] = Find (Xs.begin (), Xs.end (), x2[i])-Xs.begin (); } return Xs.size ();} void Solve () {memset (FLD, False, sizeof (FLD)); W = Compress (X1, X2, W); h = Compress (Y1, Y2, h); for (int i=0; i<n; i++) for (int y=y1[i], y<=y2[i]; y++) for (int x=x1[i]; x<=x2[i]; x + +) fld[y][x] = true; for (int y=0, y
Discrete processing of coordinates