Pagini recente » Cod sursa (job #2798343) | Cod sursa (job #2442818) | Cod sursa (job #582139) | Cod sursa (job #2125678) | Cod sursa (job #19374)
Cod sursa(job #19374)
#include <stdio.h>
const int N_MAX = 512;
const int P_MAX = 12;
int a[P_MAX][N_MAX][N_MAX];
inline int MAX(int a, int b)
{
return (a > b ? a : b);
}
int main()
{
freopen("plantatie.in", "r", stdin);
freopen("plantatie.out", "w", stdout);
int M, N, i, j, k, x, y, l, put;
scanf("%d %d\n", &N, &M);
for (i = 1; i <= N; i ++) {
for (j = 1; j <= N; j ++) {
scanf("%d ", &a[0][i][j]);
}
}
int nr = 1;
for (nr = 2, k = 1; nr <= N; nr *= 2, k ++) {
for (i = 1; i <= N; i ++) {
for (j = 1; j <= N; j ++) {
a[k][i][j] = MAX(MAX(a[k - 1][i][j], a[k - 1][i][j + (1 << (k - 1))]), MAX(a[k - 1][i + (1 << (k - 1))][j], a[k - 1][i + (1 << (k - 1))][j + (1 << (k - 1))]));
}
}
}
for (; M; M --) {
scanf("%d %d %d\n", &x, &y, &l);
for (nr = 1, put = 0; nr <= l; nr *= 2, put ++);
if (nr > l) {
put --;
}
printf("%d\n", MAX(MAX(a[put][x][y], a[put][x][y + (l - (1 << put))]), MAX(a[put][x + (l - (1 << put))][y], a[put][x + (l - (1 << put))][y + (l - (1 << put))])));
}
return 0;
}