比赛 论文练习 评测结果 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;
}