#include <cstdio>
#include <cstring>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cctype>
#include <set>
using namespace std;
#define rep(i,b,c) for(int (i)=(b); (i)<=(c) ; (++i) )
const int maxn = 22;
long long maze[maxn][maxn][maxn],mat[maxn][maxn],A,B,C,Help[maxn];
int main()
{
memset(maze,0,sizeof(maze));
memset(mat,0,sizeof(mat));
int T;
scanf("%d",&T);
while(T--){
scanf("%lld %lld %lld",&A,&B,&C);
for(int i=1;i<=A;i++){
for(int j=1;j<=B;j++)
for(int k=1;k<=C;k++) {
scanf("%lld",&maze[i][j][k]);
maze[i][j][k]+=maze[i-1][j][k];
}
}
long long res;
bool flag=false;
rep(f1,1,A) rep(f2,f1,A){
rep(i,1,B) rep(j,1,C){
mat[i][j] = maze[f2][i][j] - maze[f1-1][i][j];
}
rep(i,1,B) rep(j,1,C){
mat[i][j] += mat[i-1][j];
}
rep(s1,1,B) rep(s2,s1,B){
long long M = 0; Help[0] =0 ;
for(int i=1;i<=C;i++){
Help[i] = mat[s2][i]-mat[s1-1][i]+Help[i-1];
if(!flag) {flag=true; res = Help[i] - M;}
else res = max(res,Help[i]-M);
M = min(M,Help[i]);
}
}
}
printf("%lld\n",res);
if(T) printf("\n");
}
return 0;
}
UVA - 10755 Garbage Heap(最大子矩阵)
最新推荐文章于 2018-03-13 20:04:38 发布