Pagini recente » Cod sursa (job #67277) | Cod sursa (job #2982765) | Cod sursa (job #888712) | Cod sursa (job #1657923) | Cod sursa (job #322875)
Cod sursa(job #322875)
#include<stdio.h>
long n,m,i,j,e[500][500],a[500][500][10],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",&e[i][j]);
a[i][j][0]=e[i][j];}
for(k=1;(1<<k)<=n;++k)
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
{a[i][j][k]=a[i][j][k-1];
if(j+(1<<(k-1))<=n)
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(i+(1<<(k-1))<=n)
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(i+(1<<(k-1))<=n&&j+(1<<(k-1))<=n)
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;
}