比赛 EYOI与SBOI开学欢乐赛11th 评测结果 ATTTTTTTTT
题目名称 矩形地块(A Strip of Land) 最终得分 10
用户昵称 qjx 运行时间 27.000 s
代码语言 C++ 内存使用 6.87 MiB
提交时间 2022-10-14 19:37:04
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;

int n,m,c,f[705][705],ans;
bool chick (int x1,int y1,int x2,int y2){
	int mx=f[x1][y1],mi=f[x1][y1];
	for (int i=x1;i<=x2;i++){
		for (int j=y1;j<=y2;j++){
			if (f[i][j]>mx){
				mx=f[i][j];
				if (mx-mi>c){
					return 0;
				}
			}
			if (f[i][j]<mi){
				mi=f[i][j];
				if (mx-mi>c){
					return 0;
				}
			}
		}
	}
	return 1;
}
int main (){
	freopen ("land.in","r",stdin);
	freopen ("land.out","w",stdout);
	scanf ("%d%d%d",&m,&n,&c);
	for (int i=1;i<=n;i++){
		for (int j=1;j<=m;j++){
			scanf ("%d",&f[i][j]);
		}
	}
	for (int i1=1;i1<=n;i1++){
		for (int j1=1;j1<=m;j1++){
			for (int i2=i1;i2<=n;i2++){
				for (int j2=j1;j2<=m;j2++){
					int sum=(j2-j1+1)*(i2-i1+1);
					if (sum<=ans){
						continue;
					}
					if (j2-j1>100){
						break;
					}
					
					if (chick(i1,j1,i2,j2)){
						ans=sum;
					}
				}
			}
		}
	}
	printf ("%d",ans);
	fclose (stdin);fclose (stdout);
	return 0;
}