比赛 |
论文练习 |
评测结果 |
AAAAAAAAAA |
题目名称 |
奶牛浴场 |
最终得分 |
100 |
用户昵称 |
梦那边的美好ET |
运行时间 |
0.420 s |
代码语言 |
C++ |
内存使用 |
3.19 MiB |
提交时间 |
2018-10-19 20:29:15 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m,k,ans=0;
struct hs{int x,y;}a[5001];
bool bk1(hs a1,hs a2){return a1.x<a2.x;}
bool bk2(hs a1,hs a2){return a1.y<a2.y;}
int main(){
freopen("wc2002_happy.in","r",stdin);
freopen("wc2002_happy.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
if(k==0){printf("%d",n*m);return 0;}
for(int i=1;i<=k;i++)scanf("%d%d",&a[i].x,&a[i].y);
sort(a+1,a+1+k,bk2);
for(int i=1;i<=k;i++){
int ju=0,a1=0,a2=n;
if(i!=k)for(int j=i+1;j<=k;j++){
if(a[j].x<=a1||a[j].x>=a2)continue;
ans=max(ans,(a[j].y-a[i].y)*(a2-a1));
if(a[j].x==a[i].x){ju=1;break;}
if(a[j].x<a[i].x)a1=a[j].x;
else a2=a[j].x;
}
if(!ju)ans=max(ans,(m-a[i].y)*(a2-a1));
}
for(int i=k;i>=1;i--){
int ju=0,a1=0,a2=n;
if(i!=1)for(int j=i-1;j>=1;j--){
if(a[j].x<=a1||a[j].x>=a2)continue;
ans=max(ans,(-a[j].y+a[i].y)*(a2-a1));
if(a[j].x==a[i].x){ju=1;break;}
if(a[j].x<a[i].x)a1=a[j].x;
else a2=a[j].x;
}
if(!ju)ans=max(ans,a[i].y*(a2-a1));
}
sort(a+1,a+1+k,bk1);
for(int i=1;i<=k;i++)if(a[i].x!=a[i-1].x)ans=max(ans,m*(a[i].x-a[i-1].x));
ans=max(ans,(n-a[k].x)*m);
printf("%d",ans);
return 0;
}