Cod sursa(job #3315389)

Utilizator BuzdiBuzdugan Rares Andrei Buzdi Data 14 octombrie 2025 08:23:25
Problema Teren Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
#include <queue>
#include <algorithm>

using namespace std;

ifstream cin("teren.in");
ofstream cout("teren.out");

const int NMAX = 300;

int n, m, k, answer;
bool a[NMAX + 1][NMAX + 1];
int sp[NMAX + 1][NMAX + 1];
int v[NMAX + 1];

int main() {
    cin >> n >> m >> k;
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            cin >> a[i][j];
        }
    }

    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            sp[i][j] = sp[i - 1][j] + a[i][j];
        }
    }

    for(int i1 = 1; i1 <= n; i1++) {
        for(int i2 = i1; i2 <= n; i2++) {
            for(int j = 1; j <= m; j++) {
                v[j] = sp[i2][j] - sp[i1 - 1][j];
            }

            int l = 1, sum = 0;
            for(int j = 1; j <= m; j++) {
                sum += v[j];
                while(sum > k) {
                    sum -= v[l];
                    l++;
                }
                answer = max(answer, (i2 - i1 + 1) * (j - l + 1));
            }
        }
    }
    cout << answer << '\n';
    return 0;
}