Pagini recente » Cod sursa (job #2741131) | Cod sursa (job #246089) | Cod sursa (job #1290766) | Cod sursa (job #1304214) | Cod sursa (job #155239)
Cod sursa(job #155239)
#include <stdio.h>
#define MAX 501
long N, M;
long v[MAX][MAX][10];
long max (long a1,long a2,long a3,long a4) {
if (a1<a2)
a1=a2;
if (a1<a3)
a1=a3;
if (a1<a4)
a1=a4;
return a1;
}
void calc ()
{
long i,j,k,p;
for (k=1; (1<<k)<=N; ++k)
{
p = (1<<(k-1));
for (i=1; i+(p<<1)-1<=N; ++i)
for (j=1; j+(p<<1)-1<=N; ++j)
v[i][j][k]=max(v[i][j][k-1],v[i+p][j][k-1],v[i][j+p][k-1],v[i+p][j+p][k-1]);
}
}
int main ()
{
freopen ("plantatie.in","r",stdin);
freopen ("plantatie.out","w",stdout);
scanf("%ld %ld", &N, &M);
for (long l=1; l<=N; ++l)
for (long c=1; c<=N; ++c)
scanf("%ld",&v[l][c]);
calc();
long x,y,z,i,p;
while (M--)
{
scanf("%ld %ld %ld", &x, &y, &z);
for (i=0;(1<<(i+1))<=z;++i);
p=(1<<i);
printf("%ld\n",max(v[x][y][i],v[x+z-p][y][i],v[x][y+z-p][i],v[x+z-p][y+z-p][i]));
}
fclose(stdin);
fclose(stdout);
return 0;
}