Pagini recente » Cod sursa (job #1212446) | Cod sursa (job #312277) | Cod sursa (job #1866988) | Cod sursa (job #1212319) | Cod sursa (job #331755)
Cod sursa(job #331755)
#include <stdio.h>
#define pow(q) (1<<(q))
#define Nmax 512
int a[Nmax][Nmax][9], n,m, p[Nmax];
int Max(int A,int B)
{
if (A > B) return A;
return B;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d%d", &n,&m);
for (int i=1;i<=n;++i)
for (int j=1;j<=n;++j)
scanf("%d", &a[i][j][1]);
for (int k=2;(1<<k) <= n; ++k)
for (int i=1;i<=n;++i) if (i+(1<<k) <= n)
for (int j=1;j<=n;++j) if (j+(1<<k) <= n)
a[i][j][k] = Max( Max( a[i][j][k-1] , a[i+pow(k-1)][j+pow(k-1)][k-1] ) ,
Max( a[i+pow(k-1)][j][k-1] , a[i][j+pow(k-1)][k-1] ) );
int tmp = 1;
for (int i=1;i<=n;++i)
{
p[i] = tmp;
if (i==pow(tmp))
++tmp;
}
#define Dif(q) (q-pow(p[q]))
for (;m>0;--m)
{
int x,y,k;
scanf("%d%d%d", &x,&y,&k);
printf("%d\n", Max(Max(a[x][y][p[k]],a[x+Dif(k)][y][p[k]]), Max(a[x][y+Dif(k)][p[k]],a[x+Dif(k)][y+Dif(k)][p[k]])));
}
return 0;
}