Pagini recente » Cod sursa (job #2685906) | Cod sursa (job #1410926) | Cod sursa (job #3273168) | Cod sursa (job #36993) | Cod sursa (job #131183)
Cod sursa(job #131183)
#include<cstdio>
const int N=501,LG=10;
int a[N][N][LG],n,m,i,j,k,l,n1,n2;
int max2(int a,int b)
{if(a<b) return b;
return a;}
int max(int a,int b,int c,int d)
{return max2(max2(a,b),max2(c,d));}
inline void build()
{
for(k=1;(1<<k)<=n;k++){n1=(n-(1<<k)+1);n2=1<<(k-1);
for(i=1;i<=n1;i++)
for(j=1;j<=n1;j++)
a[i][j][k]=max(a[i][j][k-1],a[i+n2][j][k-1],a[i+n2][j+n2][k-1],a[i][j+n2][k-1]);}
}
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]);
build();
for(;m;--m){
scanf("%d %d %d",&i,&j,&k);
for(l=0;(1<<l)<=k;l++);
l--;
printf("%d\n",max(a[i][j][l],a[i+k-(1<<l)][j][l],a[i][j+k-(1<<l)][l],a[i+k-(1<<l)][j+k-(1<<l)][l]));}
fclose(stdout);
return 0;}