Pagini recente » Cod sursa (job #528219) | Cod sursa (job #2385152) | Cod sursa (job #805346) | Cod sursa (job #1443407) | Cod sursa (job #229647)
Cod sursa(job #229647)
#include <stdio.h>
int N, M, c[10][505][505], t[505];
int max(int x, int y) { return x > y ? x : y;}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
int i, j, x, y, k;
scanf("%d %d",&N,&M);
for (i = 1; i <= N; i++)
for (j = 1; j <= N; j++) scanf("%d",&c[0][i][j]);
t[1] = 0;
for (i = 2; i <= N; i++) t[i] = t[i / 2] + 1;
for (k = 1; (1<<k) <= N; k++)
for (i = 1; i <= N - (1<<k) + 1; i++)
for (j = 1; j <= N - (1<<k) + 1; j ++)
c[k][i][j] = max(max(c[k - 1][i][j], c[k - 1][i + (1<<(k - 1))][j + (1<<(k - 1))]), max(c[k - 1][i + (1<<(k - 1))][j], c[k - 1][i][j + (1<<(k - 1))]));
for (i = 1; i <= M; i++)
{
scanf("%d %d %d",&x,&y,&k);
j = t[k];
printf("%d\n",max(max(c[j][x][y], c[j][(x + k - 1) - (1<<j) + 1][(y + k - 1) - (1<<j) + 1]), max(c[j][(x + k - 1) - (1<<j) + 1][y], c[j][x][(y + k - 1) - (1<<j) + 1])));
}
return 0;
}