Pagini recente » Cod sursa (job #109760) | Cod sursa (job #1886679) | Cod sursa (job #1153712) | Cod sursa (job #193359) | Cod sursa (job #201292)
Cod sursa(job #201292)
#include<stdio.h>
#define N 502
#define L 11
int n,m;
int a[L][N][N];
int lg[N];
inline int max(int x,int y,int z,int t)
{
if(y>x)
x=y;
if(z>x)
x=z;
if(t>x)
x=t;
return x;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d%d",&n,&m);
int i,j,k,aux,aux1,x,y,z,dify,difx,log;
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;
for(i=1; i<=lg[n]; i++)
{
aux=n-(1<<i)+1;
aux1=1<<(i-1);
for(j=1; j<=aux; j++)
{
for(k=1; k<=aux; k++)
a[i][j][k]=max(a[i-1][j][k],a[i-1][j+aux1][k],a[i-1][j][k+aux1],a[i-1][j+aux1][k+aux1]);
}
}
for(i=0; i<m; i++)
{
scanf("%d%d%d",&x,&y,&z);
log=lg[z];
dify=y+z-(1<<log);
difx=x+z-(1<<log);
printf("%d\n",max(a[log][x][y],a[log][difx][y],a[log][x][dify],a[log][difx][dify]));
}
return 0;
}