题解:
尝试所有可能的顶点,看有多少个矩形包含这个顶点。
代码如下:
#include<iostream>
#include<map>
#include<vector>
using namespace std;
struct point{
int x,y;
point(int xx,int yy){
x=xx;
y=yy;
}
};
vector<point> vec;
int n,res=0;
int x1[55],x2[55],y1[55],y2[55];
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>x1[i];
}
for(int i=0;i<n;i++){
cin>>y1[i];
}
for(int i=0;i<n;i++){
cin>>x2[i];
}
for(int i=0;i<n;i++){
cin>>y2[i];
}
for(int i=0;i<n;i++){
int x=x1[i];
for(int j=0;j<n;j++){
int y=y1[j];
vec.push_back(point(x1[i],y1[j]));
}
}
for(int i=0;i<n;i++){
int x=x2[i];
for(int j=0;j<n;j++){
int y=y2[j];
vec.push_back(point(x2[i],y2[j]));
}
}
for(int i=0;i<vec.size();i++){
int x=vec[i].x,y=vec[i].y;
int tmp=0;
for(int j=0;j<n;j++){
if(x>x1[j]&&y>y1[j]&&x<=x2[j]&&y<=y2[j]){
tmp++;
}
}
if(tmp>res){
res=tmp;
}
}
if(res==0){
cout<<1;
}else{
cout<<res;
}
return 0;
}