Pagini recente » Cod sursa (job #26374) | Cod sursa (job #1143533) | Cod sursa (job #338155) | Cod sursa (job #16178) | Cod sursa (job #87165)
Cod sursa(job #87165)
#include <stdio.h>
#define NMAX (1<<9)
#define MAX(a,b) (((a)>(b))?(a):(b))
int A[NMAX][NMAX], Q[NMAX][NMAX][12], N, M;
void read()
{
int i, j;
freopen("plantatie.in", "r", stdin);
scanf("%d%d", &N, &M);
for (i = 1; i <= N; i++)
for (j = 1; j <= N; j++)
{
scanf("%d", &A[i][j]);
Q[i][j][0] = A[i][j];
}
}
void solve()
{
int i, j, k, p, e;
for (i = N; i >= 1; i--)
for (j = N; j >= 1; j--)
for (k = 0, p = 1; k < 9; k++, p = (1<<k))
if (i+p-1<NMAX && j+p-1<NMAX)
Q[i][j][k+1] = MAX( MAX(Q[i][j][k], Q[i+p][j+p][k]), MAX(Q[i+p][j][k], Q[i][j+p][k]) );
freopen("plantatie.out", "w", stdout);
while (M--)
{
scanf("%d%d%d", &i, &j, &k);
p = 1; e = 0;
while ((p<<1)<=k) p = p<<1, e++;
printf("%d\n", MAX( MAX(Q[i][j][e], Q[i][j+k-p][e]), MAX(Q[i+k-p][j][e], Q[i+k-p][j+k-p][e]) ));
}
}
int main()
{
read();
solve();
return 0;
}