Pagini recente » Cod sursa (job #391969) | Cod sursa (job #430299)
Cod sursa(job #430299)
#include <cstdio>
#define nmax 510
int v[10][nmax][nmax], lg[nmax], n, m;
inline int max(int a, int b)
{
if (a<b) a=b;
return a;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d %d",&n,&m);
int i, j, k, c, r;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++) scanf("%d",&v[0][i][j]);
for (i=2; i<=n; i++) lg[i]=lg[i/2]+1;
for (k=1; k<=lg[n]; k++)
for (i=1; i<=n-(1<<k)+1; i++)
for (j=1; j<=n-(1<<k)+1; j++)
v[k][i][j]=max(max(v[k-1][i][j],v[k-1][i+(1<<(k-1))][j]),max(v[k-1][i][j+(1<<(k-1))],
v[k-1][i+(1<<(k-1))][j+(1<<(k-1))]));
while (m--)
{
scanf("%d %d %d",&i,&j,&k);
c=lg[k];
r=max(max(v[c][i][j], v[c][i][j+k-(1<<c)]), max(v[c][i+k-(1<<c)][j], v[c][i+k-(1<<c)][j+k-(1<<c)]));
printf("%d\n",r);
}
}