Cod sursa(job #113549)

Utilizator filipbFilip Cristian Buruiana filipb Data 10 decembrie 2007 19:27:21
Problema Teren Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>
#include <string.h>
#define FOR(i, a, b) for (i = a; i <= b; i++)
#define maxim(a, b) ((a > b) ? a : b)
#define NMax 305

int M, N, X, D[NMax][NMax], S[NMax], SUM[NMax], bst;

int main(void)
{
    int i, j, k, lx = 0;
    
    freopen("teren.in", "r", stdin);
    freopen("teren.out", "w", stdout);

    scanf("%d %d %d", &M, &N, &X);
    FOR (i, 1, M)
        FOR (j, 1, N)
            scanf("%d", &D[i][j]);

    FOR (i, 1, M)
    {
        memset(S, 0, sizeof(S));
        FOR (j, i, M)        
        {
            FOR (k, 1, N)
                S[k] += D[j][k],
                SUM[k] = SUM[k-1] + S[k];
            if (bst > (j-i+1) * N) continue;

            lx = 0;
            FOR (k, 1, N)
            {
                while (SUM[k] - SUM[lx] > X)
                    lx++;
                bst = maxim(bst, (k-lx) * (j-i+1));
            }

        }
    }

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

    return 0;
}