Pagini recente » Cod sursa (job #2187337) | Cod sursa (job #2282386) | Cod sursa (job #55135) | Cod sursa (job #389165) | Cod sursa (job #385998)
Cod sursa(job #385998)
#include<stdio.h>
int n,m,v[10][505][505],log[505];
inline int max(int a, int b, int c, int d)
{
if(a<b)
a=b;
if(a<c)
a=c;
if(a<d)
a=d;
return a;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d%d",&n,&m);
int i,j,k,lim;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&v[0][i][j]);
for(i=2;i<=n;i++)
log[i]=log[i>>1]+1;
for(i=1;i<=10;i++)
{
lim=n+1-(1<<i);
for(j=1;j<=lim;j++)
for(k=1;k<=lim;k++)
v[i][j][k]=max(v[i-1][j][k],v[i-1][j+(1<<(i-1))][k],v[i-1][j][k+(1<<(i-1))],v[i-1][j+(1<<(i-1))][k+(1<<(i-1))]);
}
int x,y,z,p;
while(m--)
{
scanf("%d%d%d",&x,&y,&z);
i=log[z];
p=1<<i;
printf("%d\n",max(v[i][x][y],v[i][x+z-p][y],v[i][x][y+z-p],v[i][x+z-p][y+z-p]));
}
return 0;
}