Pagini recente » Cod sursa (job #2192198) | Cod sursa (job #3167896) | Cod sursa (job #2358364) | Cod sursa (job #2421810) | Cod sursa (job #1042739)
#include<stdio.h>
#define xa (1<<(k-1))
int m,n,i,j,k,q,p,pow[513];
struct ciorba
{
int p[13];
}v[5013][513];
inline int max(int a, int b, int c, int d)
{
return (a>b?a:b)>(c>d?c:d) ? (a>b?a:b) : (c>d?c:d) ;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=0;i<n;++i)
for(j=0;j<n;++j)
scanf("%d",&v[i][j].p[0]);
for(k=1;1<<k<=n;++k)
for(i=0;i<n;++i)
for(j=0;j<n;++j)
v[i][j].p[k]=max( v[i][j].p[k-1] , v[i+xa][j].p[k-1] , v[i][j+xa].p[k-1] , v[i+xa][j+xa].p[k-1] );
for(k=0;(1<<k)<500;++k)pow[1<<k]=k;
k=0;
for(i=0;i<=501;++i)
if(pow[i]==0)pow[i]=k;
else k=pow[i];
for(q=0;q<m;++q)
{
scanf("%d%d%d",&i,&j,&k);
--i;--j;
p=pow[k];
k-=(1<<p);
printf("%d\n",max( v[i][j].p[p] , v[i+k][j].p[p] , v[i][j+k].p[p] , v[i+k][j+k].p[p] ));
}
return 0;
}