Cod sursa(job #3296722)

Utilizator biancalautaruBianca Lautaru biancalautaru Data 15 mai 2025 22:04:17
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#define DIM 501
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int e[DIM], r[DIM][DIM][10];
int main() {\
	int n, q;
	fin >> n >> q;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			fin >> r[i][j][0];
	for (int p = 1, k = 2; k <= n; p++, k *= 2)
		for (int i1 = 1; i1 <= n - k + 1; i1++)
			for (int j1 = 1; j1 <= n - k + 1; j1++) {
				int i2 = i1 + k / 2;
				int j2 = j1 + k / 2;
				r[i1][j1][p] = max(max(r[i1][j1][p - 1], r[i1][j2][p - 1]),
								   max(r[i2][j1][p - 1], r[i2][j2][p - 1]));
			}
	e[1] = 0;
	for (int i = 2; i <= n; i++)
		e[i] = e[i / 2] + 1;
	while (q--) {
		int i1, j1, len;
		fin >> i1 >> j1 >> len;
		int i2 = i1 + len - (1 << e[len]);
		int j2 = j1 + len - (1 << e[len]);
		fout << max(max(r[i1][j1][e[len]], r[i1][j2][e[len]]),
					max(r[i2][j1][e[len]], r[i2][j2][e[len]])) << "\n";
	}
	return 0;
}