Pagini recente » Cod sursa (job #2162031) | Cod sursa (job #692300) | Cod sursa (job #1151105) | Cod sursa (job #789513) | Cod sursa (job #19385)
Cod sursa(job #19385)
#include <stdio.h>
int i,j,k,q,n,m,x,y;
int a[12][512][512];
inline int max(int x,int y) { if (x>y) return x; else return y;}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d %d",&n,&m);
//printf("%d %d\n",n,m);
for (i=0;i<n;++i)
for (j=0;j<n;++j)
scanf("%d ",&a[0][i][j]);
/*for (i=0;i<n;++i)
{
for (j=0;j<n;++j)
printf("%d ",a[0][i][j]);
printf("\n");
}*/
for (k=1;(1<<k)<=n;++k)
for (i=0;i<=n;++i)
for (j=0;j<=n;++j)
a[k][i][j]=max(max(a[k-1][i][j],a[k-1][i+(1<<(k-1))][j]),max(a[k-1][i][j+(1<<(k-1))],a[k-1][i+(1<<(k-1))][j+(1<<(k-1))]));
for (i=1;i<=m;++i)
{
scanf("%d %d %d",&x,&y,&k);
q=1;
x--;
y--;
int nr=0;
while (q<=k)
{
nr++;
q*=2;
}
q/=2;
nr--;
printf("%d\n",max(max(a[nr][x][y],a[nr][x+k-q][y]),max(a[nr][x][y+k-q],a[nr][x+k-q][y+k-q])));
}
return 0;
}