Cod sursa(job #416372)

Utilizator otilia_sOtilia Stretcu otilia_s Data 12 martie 2010 17:28:55
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
using namespace std;
#define NMAX 502
int M[NMAX][NMAX][10];

int max4(int a, int b, int c, int d)
{
	a=max(a,b); a=max(a,c); 
	return max(a,d);	
}

int main()
{
	ifstream fin("plantatie.in"); ofstream fout("plantatie.out");
	int n,m,i,j,k;
	
	fin>>n>>m;
	for (i=1;i<=n;++i) 
	 for (j=1;j<=n;++j)
		fin>>M[i][j][0];
	 
	for (k=1; (1<<k)<=n; ++k)
	 for (i=1; ((1<<k)+i<=n+1);++i)
	  for (j=1; ((1<<k)+j<=n+1);++j)	  
		M[i][j][k]=max4(M[i][j][k-1],M[i+(1<<(k-1))][j][k-1],M[i][j+(1<<(k-1))][k-1],M[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);
	
	while (m--)
	{ int p;
		fin>>i>>j>>k;
		p=0;
		while ((1<<p)<=k) ++p;
		--p;
		fout<<max4(M[i][j][p],M[i+k-(1<<p)][j][p],M[i][j+k-(1<<p)][p],M[i+k-(1<<p)][j+k-(1<<p)][p])<<"\n";
	}	
	fin.close(); fout.close();
	return 0;
}