Cod sursa(job #3213188)

Utilizator laurentiu.maticaMatica Laurentiu-Andrei laurentiu.matica Data 12 martie 2024 17:36:18
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
using namespace std;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");

const int NMAX = 501;

int n, m;
int r[9][NMAX][NMAX];
int E[NMAX];

int main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			cin >> r[0][i][j];
	E[1] = 0;
	for (int i = 2; i <= n; i++)
		E[i] = 1 + E[i / 2];
	for(int p=1,len=2;len<=n;p++,len*=2)
		for(int i=1;i+len-1 <=n; i++)
			for (int j = 1; j+len-1 <= n; j++)
			{
				int i2 = i + (len >> 1);
				int j2 = j + (len >> 1);
				r[p][i][j] = max(max(r[p-1][i][j], r[p - 1][i2][j]), max(r[p - 1][i][j2], r[p - 1][i2][j2]));
			}
	for (int k = 1; k <= m; k++)
	{
		int i, j, l;
		cin >> i >> j >> l;
		int p = E[l];
		int len = (1 << p);
		int i2 = i + l - len;
		int j2 = j + l - len;
		cout << max(max(r[p][i][j], r[p][i2][j]), max(r[p][i][j2], r[p][i2][j2])) << '\n';
	}
}