Sample Input
【输入样例1】 1 7
-9 -9 8 8 1 7 -4
【输入样例2】 3 4
2 3 4 5 1 3 2 4 4 3 2 1
Sample Output
【输出样例1】 128
【输出样例2】 288 var
n,m,ans:longint;
i,j,k,min,max,tem1,tem2:longint; f:array[1..200] of longint;
p,q:array[1..200,1..200] of longint; a:array[1..200,1..200] of longint; procedure cricle; var i,j,t:longint;
temp:array[1..200,1..200] of longint; begin
for i:=1 to m do
for j:=1 to n do temp[i,j]:=a[j,m-i+1]; a:=temp;
t:=n; n:=m; m:=t; end;
procedure main; begin
fillchar(p,sizeof(p),0); fillchar(q,sizeof(q),0); for i:=1 to n do begin fillchar(f,sizeof(f),0);
max:=-9999999; min:=9999999; for j:=i to n do begin tem1:=0; tem2:=0;
for k:=1 to m do begin inc(f[k],a[j,k]); tem1:=tem1+f[k];
if tem1<0 then tem1:=0; if max
if min>tem2 then min:=tem2; end;
p[i,j]:=max; q[i,j]:=min; end; end;
for i:=1 to n-1 do
for j:=i to n-1 do begin
if p[i,j]*p[j+1,n]>ans then ans:=p[i,j]*p[j+1,n]; if q[i,j]*q[j+1,n]>ans then ans:=q[i,j]*q[j+1,n]; end; end; begin
readln(n,m); for i:=1 to n do
for j:=1 to m do read(a[i,j]); if n*m=2 then begin
if n=1 then writeln(a[1,1]*a[1,2]); if m=1 then writeln(a[1,1]*a[2,1]); exit; end; ans:=0; main; cricle; main;
writeln(ans); end.
输入 6 7
2 3 4 5 7 6 1 1 3 2 4 8 6 7 4 3 2 1 5 7 8 6 7 8 3 2 4 1 5 6 9 8 4 3 2
8 7 6 5 4 2 1 输出 8989 输入 4 8
2 4 9 -3 7 8 12 6 9 11 3 -5 6 8 7 4 -3 8 12 9 10 7 11 5
7 10 -9 5 -2 4 6 12 输出 8100
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库noip普及组复赛模拟试题7(答案)(2)在线全文阅读。
相关推荐: