Pagini recente » Cod sursa (job #828371) | Cod sursa (job #2649109) | Cod sursa (job #2269660) | Cod sursa (job #301040) | Cod sursa (job #1694959)
#include <cstdio>
#include <algorithm>
using namespace std;
int lg[505], a[10][505][505], n, i, j, q, v1,v2,v3,v4,z, x,y,Log, l;
void Rmq()
{
int i,j,l;
for(l=1; l<=lg[n]; ++l)
{
for(i=1; i<=n; ++i)
for(j=1; j<=n; ++j)
{
z=(1<<(l-1));
v1=a[l-1][i][j];
v2=a[l-1][i-z][j];
v3=a[l-1][i][j-z];
v4=a[l-1][i-z][j-z];
a[l][i][j]=max( max(v1,v2), max(v3,v4) );
}
}
}
int main()
{
freopen("plantatie.in", "r", stdin);
freopen("plantatie.out", "w", stdout);
scanf("%d%d", &n, &q);
for(i=1; i<=n; ++i)
for(j=1; j<=n; ++j)
scanf("%d", &a[0][i][j]);
for(i=2; i<=n; ++i) lg[i] = lg[i>>1]+1;
Rmq();
while(q--)
{
scanf("%d%d%d", &x, &y, &l);
x+=l-1;
y+=l-1;
Log=lg[l];
z=l-(1<<Log);
v1=a[Log][x][y];
v2=a[Log][x][y-z];
v3=a[Log][x-z][y];
v4=a[Log][x-z][y-z];
printf("%d\n", max( max(v1,v2), max(v3,v4)) );
}
return 0;
}