Pagini recente » Cod sursa (job #2022843) | Cod sursa (job #321937) | Cod sursa (job #1175856) | Cod sursa (job #1993346) | Cod sursa (job #332674)
Cod sursa(job #332674)
#include <stdio.h>
#define DIM 505
#define LOG 9
int rmq[LOG][DIM][DIM];
int log[DIM];
int n,m;
void read ()
{
int i,j;
scanf ("%d%d",&n,&m);
for (i=1; i<=n; ++i)
for (j=1; j<=n; ++j)
scanf ("%d",&rmq[0][i][j]);
}
int max (int a,int b)
{
if (a>b)
return a;
return b;
}
void proc ()
{
int i,j,k;
for (k=1; (1<<k)<=n; ++k)
for (i=1; i<=n-(1<<k)+1; ++i)
for (j=1; j<=n-(1<<k)+1; ++j)
rmq[k][i][j]=max (max (rmq[k-1][i][j],rmq[k-1][i][j+(1<<(k-1))]),max (rmq[k-1][i+(1<<(k-1))][j],rmq[k-1][i+(1<<(k-1))][j+(1<<(k-1))]));
}
void solve ()
{
int i,x,y,z,lg;
for (i=1; i<=m; ++i)
{
scanf ("%d%d%d",&x,&y,&z);
lg=log[z];
printf ("%d\n",max (max (rmq[lg][x][y],rmq[lg][x][y+z-(1<<lg)]),max (rmq[lg][x+z-(1<<lg)][y],rmq[lg][x+z-(1<<lg)][y+z-(1<<lg)])));
}
}
int main ()
{
freopen ("plantatie.in","r",stdin);
freopen ("plantatie.out","w",stdout);
read ();
proc ();
solve ();
return 0;
}