Pagini recente » Cod sursa (job #1928059) | Cod sursa (job #2228690) | Cod sursa (job #2973913) | Cod sursa (job #152262) | Cod sursa (job #524167)
Cod sursa(job #524167)
#include<cstdio>
using namespace std;
int V[501][501][10],lg[1000],i,j,k,n,m,I,J,L,LG,MAX(int a,int b,int c,int d);
void read(),solve();
int main()
{
read();
solve();
return 0;
}
void read()
{
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",&V[i][j][0]);
lg[1]=0;
for(i=2;i<=500;i++)
lg[i]=lg[i>>2]+1;
}
void solve()
{
for(k=1;(1<<k)<=500;k++)
{
for(i=1;i+(1<<k)-1<=500;i++)
{
for(j=1;j+(1<<k)-1<=500;j++)
{
L=(1<<(k-1));
V[i][j][k]=MAX(V[i][j][k-1],V[i][j+L][k-1],V[i+L][j][k-1],V[i+L][j+L][k-1]);
}
}
}
for(;m;m--)
{
scanf("%d%d%d",&i,&j,&k);
LG=lg[k];
L=(1<<LG);
I=i+k;J=j+k;
printf("%d\n",MAX(V[i][j][LG],V[I-L][j][LG],V[i][J-L][LG],V[I-L][J-L][LG]) );
}
}
int MAX(int a,int b,int c,int d)
{
int rez=0;
if(rez<a)rez=a;
if(rez<b)rez=b;
if(rez<c)rez=c;
if(rez<d)rez=d;
return rez;
}