j-i+1 is the total rows being iterated now
k-h+1 is the maximum column number that satisfy the limit
/* UVas */
/*****************************************************************************/
#define ll long long
int t, N, M, ce=1;
ll K;
ll mat2[100][100];
ll mat1[100];
int main(void) {
scanf("%d", &t);
while (t--) {
scanf("%d %d %lld", &N, &M, &K);
for (int i=0; i<N; i++)
for (int j=0; j<M; j++)
scanf("%lld", &mat2[i][j]);
ll r0=0, r1=0;
for (int i=0; i<N; i++) {
memset(mat1, 0, sizeof(mat1));
for (int j=i; j<N; j++) {
for (int k=0; k<M; k++)
mat1[k]+=mat2[j][k];
int h=0;
ll c=0;
for (int k=0; k<M; k++) {
c+=mat1[k];
while (c>K)
c-=mat1[h++];
ll a=(j-i+1)*(k-h+1);
if (a>r0) {
r0=a;
r1=c;
} else if (a==r0) {
r1=min(r1, c);
}
}
}
}
printf("Case #%d: %lld %lld\n", ce++, r0, r1);
}
}
/*****************************************************************************/
No comments :
Post a Comment