Pagini recente » Cod sursa (job #1382014) | Cod sursa (job #44467) | Cod sursa (job #1823028) | Cod sursa (job #2713815) | Cod sursa (job #2593242)
#include<cstdio>
#include<algorithm>
int A[505][505][10];
int main()
{
int n , m ;
freopen("plantatie.in" , "r" , stdin);
freopen("plantatie.out" , "w" , stdout);
scanf("%d%d" , &n , &m);
for(int i = 1; i <= n ; i ++)
{
for(int j = 1; j <= n ; j ++)
scanf("%d" ,&A[i][j][0]);
}
for(int k = 1; k <= 9; k ++)
for(int i = 1; i <= n && i + (1 << k) <= n + 1; i ++)
for(int j = 1; j <= n && j + (1 << k) <= n + 1; j ++)
A[ i ][ j ][ k ] = std :: max(A[i][j][k - 1],std :: max(A[i][j + ( 1<<(k - 1))][k - 1], std :: max(A[i + (1<<(k - 1))][j][k - 1], A[i + (1 << (k - 1))][j + (1 << (k - 1))][k - 1])));
for(int query = 1; query <= m ; query ++)
{
int i , j , k;
scanf("%d%d%d" , &i , &j , &k);
int p = 0;
int power = 1;
while(power <= k){
power *= 2;
p ++;
}
power /= 2;
p --;
printf("%d\n" , std :: max(A[i][j][p],std :: max(A[i][j+k-power][p], std :: max(A[i+k-power][j][p], A[i+k-power][j+k-power][p]))));
}
return 0;
}