Pagini recente » Cod sursa (job #2786622) | Cod sursa (job #987960) | Cod sursa (job #564387) | Cod sursa (job #1670359) | Cod sursa (job #2789798)
#include <fstream>
#define mF "plantatie"
std::ifstream in(mF ".in");
std::ofstream out(mF ".out");
constexpr int L(int e) {return e? L(e >> 1) + 1: 0;}
constexpr int N = 500; int V[L(N)][N][N];
#include <algorithm>
#define A i-1
#define B (1<<A)
#define C c - (1<<l)
int main()
{
int n, m; in >> n >> m; for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) in >> (*V)[i][j];
for (int i = 1; i < L(n); i++)
for (int j = 0; j + (1<<i) <= n; j++)
for (int k = 0; k + (1<<i) <= n; k++)
V[i][j][k] = std::max({
V[A][j][k], V[A][j][k + B],
V[A][j + B][k], V[A][j + B][k + B]});
while (m--) {int a, b, c, l; in >> a >> b >> c; l = L(c)-1, --a, b--;
out << std::max({
V[l][a][b], V[l][a][b + C],
V[l][a + C][b], V[l][a + C][b + C]}) << '\n';}
}