Cod sursa(job #65806)

Utilizator peanutzAndrei Homorodean peanutz Data 12 iunie 2007 16:35:50
Problema Plantatie Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <stdio.h>
#define NMAX 125

int n, m;
int a[NMAX][NMAX][NMAX];//a[i][j][k] = max(a[i][j][k-1], a[i+1][j][k-1], a[i][j+1][k-1], a[i+1][j+1][k-1]);

inline int max(int a, int b) { return (a > b) ? a : b; }

void read()
{
	int i, j;
	scanf("%d %d", &n, &m);

    if(n >= NMAX)
         n = NMAX-1;

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

void dinamic()
{
	int i, j, k;
	int aux;
	for(i = n-1; i > 0; --i)
	{
		for(j = n-1; j > 0; --j)
		{
			//aux = max(i, j);
			aux = (n-i+1)*(n-j+1);
			for(k = 2; k < NMAX; ++k)
				a[i][j][k] = max(max(a[i][j][k-1], a[i+1][j][k-1]), max(a[i][j+1][k-1], a[i+1][j+1][k-1]));
		}
	}
}

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

	read();
	dinamic();

	int i, j, k;
	//scanf("%d", &m);
	while(m--)
	{
		scanf("%d %d %d\n", &i, &j, &k);
		printf("%d\n", a[i][j][k]);
	}
	fclose(stdin);
	fclose(stdout);

	return 0;
}