Pagini recente » Cod sursa (job #1653886) | Cod sursa (job #1996238) | Cod sursa (job #2670331) | Cod sursa (job #1884087) | Cod sursa (job #184576)
Cod sursa(job #184576)
#include <stdio.h>
#include <vector>
#define NMAX 505
#define max(a,b) ( ( a > b) ? a : b )
long int n,m;
long int lg[NMAX];
long int a[NMAX][NMAX][10];
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
long int i,j,l,k;
scanf("%ld %ld",&n,&m);
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
scanf("%ld ",&a[i][j][0]);
for (i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
l=lg[n];
for (k=1;k<=l;++k)
for (i=1;i<=n-(1<<k)+1;++i)
for (j=1;j<=n-(1<<k)+1;++j)
{
a[i][j][k]=max(a[i][j][k-1],a[i][j+(1<<(k-1))][k-1]);
a[i][j][k]=max(a[i][j][k],a[i+(1<<(k-1))][j][k-1]);
a[i][j][k]=max(a[i][j][k],a[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);
}
long int x,y,p,rez;
for (;m;--m)
{
scanf("%ld %ld %ld",&x,&y,&l);
p=lg[l];
rez=max(a[x][y][p],a[x][y+l-(1<<p)][p]);
rez=max(rez,a[x+l-(1<<p)][y][p]);
rez=max(rez,a[x+l-(1<<p)][y+l-(1<<p)][p]);
printf("%ld\n",rez);
}
return 0;
}