Pagini recente » Cod sursa (job #2487326) | Cod sursa (job #1884102) | Cod sursa (job #795098) | Cod sursa (job #1180625) | Cod sursa (job #1762463)
#include <cstdio>
int r[501][501][10];
int logx[501];
using namespace std;
int max( int a, int b, int c, int d )
{
if( b>a )
a=b;
if( c>a )
a=c;
if( d>a )
a=d;
return a;
}
int main()
{
freopen( "plantatie.in", "r", stdin );
freopen( "plantatie.out", "w", stdout );
int n, m, k, x, y, i, j, l, rez;
scanf( "%d%d", &n, &m );
for( i=1;i<=n;i++ )
for( j=1;j<=n;j++ )
{
scanf( "%d", &r[i][j][0] );
for( l=1;(1<<l)<=i && (1<<l)<=j;l++ )
r[i][j][l]=max(r[i][j][l-1],
r[i][j-(1<<(l-1))][l-1],
r[i-(1<<(l-1))][j][l-1],
r[i-(1<<(l-1))][j-(1<<(l-1))][l-1]);
}
logx[1]=0;
for( i=2;i<=n;i++ )
logx[i]=1+logx[i/2];
for( i=1;i<=m;i++ )
{
scanf( "%d%d%d", &x, &y, &k );
l=logx[k];
rez=max(r[x+(1<<l)-1][y+(1<<l)-1][l],
r[x+(1<<l)-1][y+k-1][l],
r[x+k-1][y+(1<<l)-1][l],
r[x+k-1][y+k-1][l]);
printf( "%d\n", rez );
}
return 0;
}