Pagini recente » Cod sursa (job #1750821) | Cod sursa (job #659151) | Cod sursa (job #2398178) | Cod sursa (job #2962911) | Cod sursa (job #1667357)
#include <cstdio>
#include <algorithm>
using namespace std;
int r[505][505][10],lg[505];
int maxx(int a, int b, int c ,int d)
{
int m=-1;
if(a>m) m=a;
if(b>m) m=b;
if(c>m) m=c;
if(d>m) m=d;
return m;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
int n,m,i,j,l,lin,col,x,y,k,val;
scanf("%d%d",&n,&m);
lg[1]=0;
for(i=2;i<=n;i++) lg[i]=lg[i/2]+1;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
for(l=0;( (1<<l)<=i and (1<<l)<=j ) ; l++)
{
if(l==0) scanf("%d",&r[i][j][0]);
else
{
k=(1<<(l-1));
r[i][j][l]=maxx(r[i][j][l-1],r[i-k][j][l-1],r[i][j-k][l-1],r[i-k][j-k][l-1]);
}
}
}
}
for(int t=1;t<=m;t++)
{
scanf("%d%d%d",&i,&j,&l);
x=i+l-1;
y=j+l-1;
k=lg[l];
val=(1<<k);
printf("%d\n",maxx(r[i+val-1][j+val-1][k],r[i+val-1][y][k],r[x][j+val-1][k],r[x][y][k]) );
}
return 0;
}