Pagini recente » Cod sursa (job #609965) | Cod sursa (job #835513) | Cod sursa (job #2778472) | Cod sursa (job #2777873) | Cod sursa (job #322882)
Cod sursa(job #322882)
#include<stdio.h>
long n,m,i,j,a[505][505][11],k,x,y,p,aa;
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",&a[i][j][0]);
for(k=1;(1<<k)<=n;++k)
for(i=1;i+(1<<(k-1))-1<=n;++i)
for(j=1;j+(1<<(k-1))-1<=n;++j)
{a[i][j][k]=a[i][j][k-1];
if(a[i][j][k]<a[i][j+(1<<(k-1))][k-1])
a[i][j][k]=a[i][j+(1<<(k-1))][k-1];
if(a[i][j][k]<a[i+(1<<(k-1))][j][k-1])
a[i][j][k]=a[i+(1<<(k-1))][j][k-1];
if(a[i][j][k]<a[i+(1<<(k-1))][j+(1<<(k-1))][k-1])
a[i][j][k]=a[i+(1<<(k-1))][j+(1<<(k-1))][k-1];}
for(i=1;i<=m;++i)
{scanf("%ld%ld%ld",&x,&y,&k);
p=1;
while((1<<(p+1))<=k)p++;
aa=a[x][y][p];
if(aa<a[x][y+k-(1<<p)][p])aa=a[x][y+k-(1<<p)][p];
if(aa<a[x+k-(1<<p)][y][p])aa=a[x+k-(1<<p)][y][p];
if(aa<a[x+k-(1<<p)][y+k-(1<<p)][p])aa=a[x+k-(1<<p)][y+k-(1<<p)][p];
printf("%ld\n",aa);}
return 0;
}