Pagini recente » Cod sursa (job #1949766) | Cod sursa (job #2173337) | Cod sursa (job #1380633) | Cod sursa (job #106718) | Cod sursa (job #935629)
Cod sursa(job #935629)
#include <stdio.h>
#define NMAX 510
#define LGMAX 13
int N, M;
int a[LGMAX][NMAX][NMAX];
int p2[NMAX];
inline int MAX(int a, int b) { return (a > b) ? a : b; }
int main()
{
int i, j, k, lg;
freopen("plantatie.in", "r", stdin);
freopen("plantatie.out", "w", stdout);
scanf("%d %d", &N, &M);
for (i = 1; i <= N; i++)
for (j = 1; j <= N; j++)
scanf("%d", &a[0][i][j]);
for (lg = 1, k = 1; (lg << 1) <= N; lg <<= 1, k++)
for (i = 1; i <= N - (lg << 1) + 1; i++)
for (j = 1; j <= N - (lg << 1) + 1; j++)
a[k][i][j] = MAX( MAX(a[k-1][i][j], a[k-1][i][j + lg]), MAX(a[k-1][i + lg][j], a[k-1][i + lg][j + lg]) );
for (i = 1; i <= N; i++)
if ((1 << (p2[i-1] + 1)) <= i) p2[i] = p2[i-1] + 1;
else p2[i] = p2[i-1];
int x, y, l;
for (i = 1; i <= M; i++) {
scanf("%d %d %d", &x, &y, &l);
k = p2[l];
lg = 1 << k;
printf("%d\n", MAX( MAX(a[k][x][y], a[k][x][y + l - lg]), MAX(a[k][x + l - lg][y], a[k][x + l - lg][y + l - lg]) ) );
}
fclose(stdin);
fclose(stdout);
return 0;
}