Cod sursa(job #59035)

Utilizator TabaraTabara Mihai Tabara Data 7 mai 2007 22:26:48
Problema Plantatie Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
//40
#include <stdio.h>

#define in "plantatie.in"
#define out "plantatie.out"
#define NMAX 201
#define maxim(a,b) ( (a) > (b) ? (a) : (b) )

int a[NMAX][NMAX];
int d[NMAX][NMAX][NMAX];
int n, m;

void Dinamic();

int main()
{
    freopen( in, "r", stdin );
    freopen( out, "w", stdout );
    
    scanf( "%d%d", &n, &m );
    int i, j, ii, jj, k;
    
    for ( i = 1; i <= n; ++i )
        for ( j = 1; j <= n; ++j )
            scanf( "%d", &a[i][j] );
    Dinamic();
    for ( i = 1; i <= m; ++i )
    {
        scanf( "%d%d%d", &ii, &jj, &k );
        printf( "%d\n", d[ii][jj][k] );
    }
    
    return 0;
}

void Dinamic()
{
     int i, j, k;
     for ( i = 1; i <= n; ++i )
         for ( j = 1; j <= n; ++j )
             d[i][j][1] = a[i][j];
             
     for ( k = 2; k <= n; ++k )
         for ( i = 1; i <= n; ++i )
             for ( j = 1; j <= n; ++j )
             {
                 d[i][j][k] = maxim( maxim(d[i][j][k-1], d[i][j+1][k-1] ), maxim(d[i+1][j][k-1], d[i+1][j+1][k-1] ) );
             }
}