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