Cod sursa(job #1581690)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 27 ianuarie 2016 00:27:23
Problema Teren Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>

using namespace std;

int mat[305][305];
int v[305];

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

    int n = 0, m = 0, x;
    cin >> n >> m >> x;

    for (int i = 1; i <= n; ++ i)
        for (int j = 1; j <= m; ++ j)
            cin >> mat[i][j];

    int ans = 0;
    for (int i = 1; i <= m; ++ i) {
        for (int k = 1; k <= n; ++ k)
            v[k] = 0;

        for (int j = i; j <= m; ++ j) {
            for (int k = 1; k <= n; ++ k)
                v[k] += mat[k][j];

            int sus = 1, sum = 0;
            for (int jos = 1; jos <= n; ++ jos) {
                sum += v[jos];

                while (sum > x && sus <= jos)
                    sum -= v[sus ++];

                if ((j - i + 1) * (jos - sus + 1) > ans)
                    ans = (j - i + 1) * (jos - sus + 1);
            }
        }
    }

    cout << ans << '\n';

    cin.close();
    cout.close();
    return 0;
}