Pagini recente » Cod sursa (job #1487568) | Cod sursa (job #2531432) | Cod sursa (job #132023) | Cod sursa (job #2998944) | Cod sursa (job #2682732)
#include <stdio.h>
#include <math.h>
int i,j,k,n,m,l,a[757][757][9],p,mx;
int max(int a,int b)
{ if (a>b) return a;
else return b;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d %d",&n,&m);
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
scanf("%d ",&a[i][j][0]);
/* p=0;
while ((1<<p) <= n) p++; */
for (k=1;(1<<k)<=n;++k)
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
{
a[i][j][k]=max(a[i][j][k-1],a[i][j+(1<<(k-1))][k-1]);
a[i][j][k]=max(a[i][j][k],a[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);
a[i][j][k]=max(a[i][j][k],a[i+(1<<(k-1))][j][k-1]);
}
for (i=1;i<=m;++i)
{
scanf("%d %d %d",&i,&j,&k);
/* p=0;
while ((1<<p) <= k) p++;
--p; */
p=log2(k);
mx=max(a[i][j][p],a[i][j+k-(1<<p)][p]);
mx=max(mx,a[i+k-(1<<p)][j][p]);
mx=max(mx,a[i+k-(1<<p)][j+k-(1<<p)][p]);
printf("%d\n",mx);
}
return 0;
}