我的代码:
#include<bits/stdc++.h>
// #define int long long
using namespace std;
inline int read() {int x=0,ff=1;char ch=getchar();while(ch<48||ch>57) {if(ch==45)ff=-1;ch=getchar();}while(ch>=48&&ch<=57) x=(x<<3)+(x<<1)+(ch^48),ch=getchar();return x*ff;}
int n,l,w,ans;
struct A{
int x,y;
}a[10010];
bool cmp1(A x,A y){
if(x.x==y.x)return x.y<y.y;
else return x.x<y.x;
}
bool cmp2(A x,A y){
if(x.y==y.y)return x.x<y.x;
else return x.y<y.y;
}
signed main(){
l = read();w = read();n = read();
for(int i=1;i<=n;i++)a[i] = {read(),read()};
a[++n] = {0,w},a[++n] = {l,0},a[++n] = {l,w},a[++n] = {0,0};
sort(a+1,a+1+n,cmp1);
for(int i=1;i<=n;i++){
int x1 = a[i].x,y1 = 0,y2 = w;
for(int j=i+1;j<=n;j++){
ans = max(ans,(a[j].x-x1)*(y2-y1));
if(a[j].y<a[i].y)y1 = max(y1,a[j].y);
else y2 = min(y2,a[j].y);
}
}
for(int i=n;i>=1;i--){
int x1 = a[i].x,y1 = 0,y2 = w;
for(int j=i-1;j>=1;j--){
ans = max(ans,(a[j].x-x1)*(y2-y1));
if(a[j].y<a[i].y)y1 = max(y1,a[j].y);
else y2 = min(y2,a[j].y);
}
}
sort(a+1,a+1+n,cmp2);
for(int i=1;i<=n-1;i++)ans = max(ans,(a[i+1].y-a[i].y)*l);
cout<<ans;
return 0;
}