int C; int N, M, K; int t, b; int price, mxArea; int sum[101]; int table[101][101];
voidread() { cin >> N >> M >> K; for (int i = 0; i < N; ++i) for (int j = 0; j < M; ++j) cin >> table[i][j]; }
voidmax1D() { int l = 0, s = 0, area;
for (int i = 0; i < M; ++i) { s += sum[i]; while (s > K) s -= sum[l++];
area = (b - t + 1) * (i - l + 1); if (area > mxArea) mxArea = area, price = s; elseif (area == mxArea) price = min(s, price); } }
voidsolve() { mxArea = 0; price = INT_MAX;
// max2D for (t = 0; t < N; ++t) { for (b = t; b < N; ++b) { for (int i = 0; i < M; ++i) sum[i] += table[b][i]; max1D(); } memset(sum, 0, sizeof(sum)); }