Cod sursa(job #110776)

Utilizator damaDamaschin Mihai dama Data 27 noiembrie 2007 19:39:51
Problema Teren Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <stdio.h>
#include <string.h>

int main()
{
    freopen("teren.in", "r", stdin);
    freopen("teren.out", "w", stdout);

    int i, j, n, m, mat[301][301], l1, l2, v[301], sol = 0, x, first, second, sum = 0;

    scanf("%d %d %d", &n, &m, &x);

    for(i = 1; i <= n; ++i)
    {
        for(j = 1; j <= m; ++j)
        {
            scanf("%d", &mat[i][j]);
        }
    }

    for(l1 = 1; l1 <= n; ++l1)
    {
        memset(v, 0, sizeof(v));
        for(l2 = l1; l2 <= n; ++l2)
        {
            for(j = 1; j <= m; ++j)
            {
                v[j] += mat[l2][j];
            }
            first = 1;
            second = 0;
            sum = 0;
            while(second <= m)
            {
                if(sum <= x)
                {
                    if(sol < (second - first + 1) * (l2 - l1 + 1))
                    {
                        sol = (second - first + 1) * (l2 - l1 + 1);
                    }
                    ++second;
                    sum += v[second];
                }
                else
                {
                    sum -= v[first];
                    ++first;
                }
            }
        }
    }

    printf("%d\n", sol);

    return 0;
}