Pagini recente » Cod sursa (job #713576) | Cod sursa (job #1017726) | Cod sursa (job #278860) | Cod sursa (job #2926768) | Cod sursa (job #376675)
Cod sursa(job #376675)
#include<stdio.h>
#define DIM 550
#define DIMQ 75050
struct query
{
int x,y,k;
};
query q[DIMQ];
int a[DIM][DIM][DIM];
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 n,int maxk,int maxx,int maxy)
{
int k,i,j;
for(k=2;k<=maxk && k<=n;++k)
for(i=1;i<=maxx && i<=n;++i)
for(j=1;j<=maxy && j<=n;++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 m,i,j,maxk,maxx,maxy,n;
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 (n,maxk,maxx,maxy);
for(i=1;i<=m;++i)
printf("%d\n",a[q[i].k][q[i].x][q[i].y]);
return 0;
}