Pagini recente » Cod sursa (job #2649951) | Cod sursa (job #1102981) | Cod sursa (job #286459) | Cod sursa (job #1187315) | Cod sursa (job #331979)
Cod sursa(job #331979)
#include<stdio.h>
#define DIM 505
#define DIMQ 75005
struct query
{
int x,y,k;
};
query q[DIMQ];
int a[DIM][DIM][DIM],maxk,maxx,maxy;
int max (int e1,int e2,int e3,int e4)
{
int m=0;
if(m<e1)
m=e1;
if(m<e2)
m=e2;
if(m<e3)
m=e3;
if(m<e4)
m=e4;
return m;
}
void map ()
{
int k,i,j;
for(k=2;k<=maxk;++k)
for(i=1;i<=maxx;++i)
for(j=1;j<=maxy;++j)
a[k][i][j]=max (a[k-1][i][j],a[k-1][i+1][j],a[k-1][i][j+1],a[k-1][i+1][j+1]);
}
int main ()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
int n,m,i,j;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
scanf("%d",&a[1][i][j]);
for(i=1;i<=m;++i)
{
scanf("%d%d%d",&q[i].x,&q[i].y,&q[i].k);
if(maxk<q[i].k)
maxk=q[i].k;
if(maxx<q[i].x+q[i].k-1)
maxx=q[i].x+q[i].k-1;
if(maxy<q[i].y+q[i].k-1)
maxy=q[i].y+q[i].k-1;
}
map ();
for(i=1;i<=m;++i)
printf("%d\n",a[q[i].k][q[i].x][q[i].y]);
return 0;
}