Pagini recente » Cod sursa (job #2757297) | Cod sursa (job #2478167) | Cod sursa (job #1310103) | Cod sursa (job #2744237) | Cod sursa (job #3234241)
#include "bits/stdc++.h"
using i64 = long long;
std::vector<std::vector<std::vector<int>>> rmq;
int query(int x, int y, int w) {
int x1 = x + w - 1, y1 = y + w - 1;
int lg = std::log2(w);
int p = (1 << lg);
int res = rmq[lg][x][y];
res = std::max(res, rmq[lg][x1 - p + 1][y]);
res = std::max(res, rmq[lg][x][y1 - p + 1]);
res = std::max(res, rmq[lg][x1 - p + 1][y1 - p + 1]);
return res;
}
void build_rmq(int n) {
for (int pw2 = 1; (1 << pw2) <= n; ++pw2) {
for (int i = 1; i <= n - (1 << pw2) + 1; ++i) {
for (int j = 1; j <= n - (1 << pw2) + 1; ++j) {
rmq[pw2][i][j] = std::max(rmq[pw2 - 1][i][j], rmq[pw2 - 1][i + (1 << (pw2 - 1))][j]);
rmq[pw2][i][j] = std::max(rmq[pw2][i][j], rmq[pw2 - 1][i][j + (1 << (pw2 - 1))]);
rmq[pw2][i][j] = std::max(rmq[pw2][i][j], rmq[pw2 - 1][i + (1 << (pw2 - 1))][j + (1 << (pw2 - 1))]);
}
}
}
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
freopen("plantatie.in", "r", stdin);
freopen("plantatie.out", "w", stdout);
int n, m;
std::cin >> n >> m;
rmq = std::vector<std::vector<std::vector<int>>>
(10, std::vector<std::vector<int>>
(n + 1, std::vector<int>(n + 1)));
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j) {
std::cin >> rmq[0][i][j];
}
}
build_rmq(n);
for (int i = 0; i < m; i++) {
int x, y, w;
std::cin >> x >> y >> w;
std::cout << query(x, y, w) << std::endl;
}
return 0;
}