Pagini recente » Cod sursa (job #2849837) | Cod sursa (job #1076583) | Cod sursa (job #2448889) | Cod sursa (job #217386) | Cod sursa (job #161027)
Cod sursa(job #161027)
#include <cstdio>
#include <cstring>
using namespace std;
long n,m,i,j,k,l,c,b,rez,q;
long a[16][512][512],p[512];
int main(){
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
p[1]=0;
for (i=2;i<=510;++i)
p[i]=p[i/2]+1;
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
scanf("%d",&a[0][i][j]);
for (k=1;k<=p[n];k++)
{
q=1<<(k-1);
for (i=1;i<=n-q+1;i++)
for (j=1;j<=n-q+1;j++)
{
a[k][i][j]=a[k-1][i][j];
if (a[k-1][i][j+q]>a[k][i][j])
a[k][i][j]=a[k-1][i][j+q];
if (a[k-1][i+q][j]>a[k][i][j])
a[k][i][j]=a[k-1][i+q][j];
if (a[k-1][i+q][j+q]>a[k][i][j])
a[k][i][j]=a[k-1][i+q][j+q];
}
}
for (i=1;i<=m;i++)
{
scanf("%d%d%d",&c,&b,&k);
l=p[k];
q=1<<l;
rez=a[l][c][b];
if (a[l][c][b-q+k]>rez)
rez=a[l][c][b-q+k];
if (a[l][c-q+k][b]>rez)
rez=a[l][c-q+k][b];
if (a[l][c-q+k][b-q+k]>rez)
rez=a[l][c-q+k][b-q+k];
printf("%d\n",rez);
}
return 0;
}