Pagini recente » Cod sursa (job #1464675) | Cod sursa (job #199810)
Cod sursa(job #199810)
# include <stdio.h>
using namespace std;
# define FIN "plantatie.in"
# define FOUT "plantatie.out"
# define MAXN 601
int A[MAXN][MAXN][10];
int N,M,i,j,k,a,b,c,rez;
int Log[MAXN];
int max(int a,int b,int c,int d)
{
int maxim = a;
if (b > maxim) maxim = b;
if (c > maxim) maxim = c;
if (d > maxim) maxim = d;
return maxim;
}
int main()
{
freopen(FIN,"r",stdin);
freopen(FOUT,"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]);
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+(1<<(k-1))][j][k-1],A[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);
for (i = 2; i <= N; ++i)
Log[i] = Log[i >> 1] + 1;
for (i = 1; i <= M; ++i)
{
scanf("%d%d%d",&a,&b,&c);
rez=max(A[a][b][Log[c]],A[a][b+c-(1<<(Log[c]))][Log[c]],
A[a+c-(1<<(Log[c]))][b][Log[c]],A[a+c-(1<<(Log[c]))][b+c-(1<<(Log[c]))][Log[c]]);
printf("%d\n",rez);
}
return 0;
}