#include <bits/stdc++.h>
using namespace std;
int s, n, x[2005], y[2005], X[2005], Y[2005], mapx[2005], mapy[2005], a[2005][2005];
void f(int x, int y, int xx, int yy){
// f(mapx[2*i-1], mapy[2*i], mapx[2*i], mapy[2*i-1])
a[x][y]++;
a[xx+1][y]--;
a[x][yy+1]--;
a[xx+1][yy+1]++;
}
int main()
{
cin >> n;
for (int i = 1; i <= 2*n; i++){
cin >> x[i] >> y[i];
X[i] = x[i];
Y[i] = y[i];
}
sort(X+1,X+2*n+1);
sort(Y+1,Y+2*n+1);
int k1 = unique(X+1,X+2*n+1)-(X+1);
int k2 = unique(Y+1,Y+2*n+1)-(Y+1);
for (int i = 1; i <= k1; i++){
mapx[i] = lower_bound(X+1,X+k1+1,x[i])-X;
}
for (int i = 1; i <= k2; i++){
mapy[i] = lower_bound(Y+1,Y+k2+1,y[i])-Y;
}
for (int i = 1; i <= n; i++){
f(mapx[2*i-1], mapy[2*i], mapx[2*i], mapy[2*i-1]);
}
for (int i = 1; i <= 2*n; i++){
for (int j = 1; j <= 2*n; j++){
a[i][j] += a[i-1][j] + a[i][j-1] -a[i-1][j-1];
}
}
for (int i = 1; i <= k1-1; i++){
for (int j = 1; j <= k2-1; j++){
if (a[i][j]&&a[i+1][j]&&a[i][j+1]&&a[i+1][j+1]){
s += (X[i+1]-X[i]) * (Y[j+1]-Y[j]);
}
}
}
cout << s;
return 0;
}
使用该代码只有#1对 请问大佬:这样的离散化可以吗?