Pagini recente » Cod sursa (job #917240) | Cod sursa (job #54653) | Cod sursa (job #47836) | Cod sursa (job #338852) | Cod sursa (job #162982)
Cod sursa(job #162982)
#include<stdio.h>
int n,m;
int b[10][520][520],x,y,z,i,j,putere,k,p;
int max(int r1,int r2,int r3,int r4)
{
if (r1>=r2&&r1>=r3&&r1>=r4) return r1;
if (r2>=r1&&r2>=r3&&r2>=r4) return r2;
if (r3>=r1&&r3>=r2&&r3>=r4) return r3;
return r4;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%ld %ld",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%ld",&b[0][i][j]);
putere=1;
for(k=1;k<=10;k++)
{
for(i=1;i<=n-putere+1;i++)
for(j=1;j<=n-putere+1;j++)
b[k][i][j]=max(b[k-1][i][j+putere],b[k-1][i+putere][j],b[k-1][i+putere][j+putere],b[k-1][i][j]);
putere*=2;
}
for(i=1;i<=m;i++)
{
scanf("%ld %ld %ld",&x,&y,&z);
for(p=1,k=0;2*p<=z;p*=2,k++);
printf("%ld\n",max(b[k][x+z-p][y],b[k][x][y+z-p],b[k][x+z-p][y+z-p],b[k][x][y]));
}
return 0;
}