题解
2025-10-14 21:19:01
发布于:广东
2阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int l,w,n;
struct qw{
int x,y;
}e[5005];
bool cmp1(qw a,qw b){
if(a.x == b.x){
return a.y < b.y;
}
return a.x < b.x;
}
bool cmp2(qw a,qw b){
if(a.y == b.y){
return a.x < b.x;
}
return a.y > b.y;
}
int main(){
cin >> l >> w >> n;
if(!n){
cout << l * w;
return 0;
}
for(int i = 1;i <= n;i++){
cin >> e[i].x >> e[i].y;
}
sort(e + 1,e + n + 1,cmp1);
int ans = -1;
for(int i = 1;i <= n;i++){
int r = w,q = 0;
for(int j = i + 1;j <= n;j++){
ans = max(ans,(e[j].x - e[i].x) * (r - q));
if(e[j].y >= e[i].y){
r = min(r,e[j].y);
}
if(e[j].y <= e[i].y){
q = max(q,e[j].y);
}
}
ans = max(ans,(l - e[i].x) * (r - q));
}
for(int i = n;i >= 1;i--){
int r = w,q = 0;
for(int j = i - 1;j >= 1;j--){
ans = max(ans,(e[i].x - e[j].x) * (r - q));
if(e[j].y >= e[i].y){
r = min(r,e[j].y);
}
if(e[j].y <= e[i].y){
q = max(q,e[j].y);
}
}
ans = max(ans,e[i].x * (r - q));
}
sort(e + 1,e + 1 + n,cmp2);
for(int i = 1;i < n;i++){
ans = max(ans,(e[i].y - e[i + 1].y) * l);
}
ans = max(ans,(w - e[1].y) * l);
ans = max(ans,e[n].y * l);
cout << ans;
return 0;
}
这里空空如也







有帮助,赞一个