Pagini recente » Cod sursa (job #3040350) | Cod sursa (job #621010) | Cod sursa (job #52734) | Cod sursa (job #940162) | Cod sursa (job #229650)
Cod sursa(job #229650)
#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))]));
while (M--)
{
scanf("%d %d %d",&x,&y,&k);
j = t[k];
printf("%d\n",max(max(c[j][x][y], c[j][x + k - (1<<j)][y + k - (1<<j)]), max(c[j][x + k - (1<<j)][y], c[j][x][y + k - (1<<j)])));
}
return 0;
}