Pagini recente » Cod sursa (job #2763236) | Cod sursa (job #2780297) | Cod sursa (job #2603061) | Cod sursa (job #498073) | Cod sursa (job #1876926)
#include <cstdio>
#include<algorithm>
using namespace std;
int n,m,i,j,k,l;
int lg[503];
int a[10][503][10][503];
int q(int x1,int y1,int x2,int y2)
{
int kx,ky,lenx=x2-x1+1,leny=y2-y1+1,m1,m2;
kx=lg[lenx];
ky=lg[leny];
m1=max(a[kx][x1][ky][1],a[kx][x1][ky][y2+1-(1<<ky)]);
m2=max(a[kx][x2+1-(1<<kx)][ky][y1],a[kx][x2+1-(1<<kx)][ky][y2+1-(1<<ky)]);
return max(m1,m2);
}
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",&a[0][i][0][j]);
for (i=2;i<=500;i++)
lg[i]=lg[i/2]+1;
for(i=0;i<n;i++)
{
for(j=1;j<=lg[n];j++)
for(k=0;k+(1<<(j-1))<n;k++)
a[0][i][j][k]=max(a[0][i][j-1][k],a[0][i][j-1][k+(1<<(j-1))]);
}
for(i=1;i<=lg[n];i++)
for(j=0;j<n;j++)
for(k=0;k<=lg[n];k++)
for(l=0;l<n;l++)
a[i][j][k][l]=max(a[i-1][j][k][l],a[i-1][j+(1<<(i-1)) ][k][l]);
for(int xx,yy,kk;m;m--)
{
scanf("%d%d%d",&xx,&yy,&kk);
printf("%d\n",q(xx-1,yy-1,xx+kk-2,yy+kk-2));
}
return 0;
}