Pagini recente » Cod sursa (job #2998887) | Cod sursa (job #107962) | Cod sursa (job #36688) | Cod sursa (job #41495) | Cod sursa (job #18161)
Cod sursa(job #18161)
#include <stdio.h>
#define FOR(i,a,b) for( i = (a); i <= (b); ++i)
#define pow(x) (1<<x)
#define fin "plantatie.in"
#define fout "plantatie.out"
int a[512][512][11], n;
int log[512];
int main()
{
freopen(fin,"r",stdin);
freopen(fout,"w",stdout);
int i,j, k, m, t;
t=0;
FOR(i,1,505)
{
log[i]=t;
if(i+1==pow(t+1))
++t;
}
scanf("%i%i", &n, &m);
FOR(i,1,n)
FOR(j,1,n)
scanf("%i", &a[i][j][0]);
for(k = 0; pow(k) <= n; ++k)
for(i = 1; i <= n; ++i)
for(j = 1; j <= n; ++j)
{
a[i][j][k+1]=a[i][j][k];
if(a[i][j][k+1]<a[i+pow(k)][j][k])
a[i][j][k+1]=a[i+pow(k)][j][k];
if(a[i][j][k+1]<a[i+pow(k)][j+pow(k)][k])
a[i][j][k+1]=a[i+pow(k)][j+pow(k)][k];
if(a[i][j][k+1]<a[i][j+pow(k)][k])
a[i][j][k+1]=a[i][j+pow(k)][k];
}
int dif, q, max, ii, jj;
FOR(t,1,m)
{
scanf("%i%i%i", &i,&j,&k);
q=log[k];
dif=k-pow(q);
max=a[i][j][q];
if(dif>0)
{
ii=i+dif;jj=j+dif;
if(max < a[ii][j][q])
max=a[ii][j][q];
if(max < a[i][jj][q])
max=a[i][jj][q];
if(max < a[ii][jj][q])
max=a[ii][jj][q];
}
printf("%i\n", max);
}
return 0;
}