Pagini recente » Cod sursa (job #181684) | Cod sursa (job #426145) | Cod sursa (job #2052846) | Cod sursa (job #2036066) | Cod sursa (job #966544)
Cod sursa(job #966544)
#include <cstdio>
#include <algorithm>
using namespace std;
int R[10][503][503], l2[503];
void RMQ (const int N) {
int k, i, j, l, n;
for (k = 1; (1 << k) <= N; ++k) {
l = 1 << k - 1;
n = N - (1 << k) + 1;
for (i = 1; i <= n; ++i)
for (j = 1; j <= n; ++j)
R[k][i][j] = max (max (R[k - 1][i][j], R[k - 1][i][j + l]), max (R[k - 1][i + l][j], R[k - 1][i + l][j + l]));
}
}
int QRY (const int i, const int j, const int l) {
return max (max (R[l2[l]][i][j], R[l2[l]][i + l - (1 << l2[l])][j]), max(R[l2[l]][i][j + l - (1 << l2[l])], R[l2[l]][i + l - (1 << l2[l])][j + l - (1 << l2[l])]));
}
void citire () {
freopen ("plantatie.in", "r", stdin);
freopen ("plantatie.out", "w", stdout);
int N, M, j, i, l;
scanf ("%d%d", &N, &M);
for (i = 1; i <= N; ++i) {
l2 [i + 1] = l2[(i + 1) >> 1] + 1;
for (j = 1; j <= N; ++j)
scanf ("%d", &R[0][i][j]);
}
RMQ (N);
while (M--)
scanf ("%d%d%d", &i, &j, &l),
printf ("%d\n", QRY (i, j, l));
}
int main() {
citire ();
}