Pagini recente » Cod sursa (job #2927626) | Cod sursa (job #2231770) | Cod sursa (job #625709) | Cod sursa (job #2999378) | Cod sursa (job #2606624)
#include <iostream>
#include <stdio.h>
using namespace std;
const int NMAX = 505;
int rmq[10][NMAX][NMAX], log2[NMAX];
int main() {
freopen ("plantatie.in", "r", stdin);
freopen ("plantatie.out", "w", stdout);
int n, m, i, j, ii, jj, x, y, xx, yy, xf, yf, l, k, rez;
scanf ("%d%d", &n, &m);
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
scanf ("%d", &rmq[0][i][j]);
log2[1] = 0;
for (i = 2; i <= n; i++)
log2[i] = 1 + log2[i / 2];
for (l = 1; l <= log2[n]; l++)
for (i = 1<<l; i <= n; i++)
for (j = 1<<l; j <= n; j++) {
ii = i - (1<<(l - 1));
jj = j - (1<<(l - 1));
rmq[l][i][j] = max(max(rmq[l - 1][ii][jj], rmq[l - 1][i][j]), max(rmq[l - 1][ii][j], rmq[l - 1][i][jj]));
}
for (i = 1; i <= m; i++) {
scanf ("%d%d%d", &x, &y, &k);
l = log2[k];
xf = x + k - 1;
yf = y + k - 1;
xx = x + (1<<l) - 1;
yy = y + (1<<l) - 1;
rez = max(max(rmq[l][xx][yy], rmq[l][xf][yf]), max(rmq[l][xx][yf], rmq[l][xf][yy]));
printf("%d\n", rez);
}
return 0;
}