Pagini recente » Cod sursa (job #2122905) | Cod sursa (job #781078)
Cod sursa(job #781078)
#include <cstdio>
int n,m;
int a[10][510][510];
int log[510];
void citire()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.in","w",stdout);
scanf("%d %d", &n, &m);
for (int i=1;i<=n;++i)
for (int j=1;j<=n;++j)
scanf("%d", &a[0][i][j]);
}
inline int max(int a, int b) { return a>b?a:b; }
int query(int i,int j,int k)
{
int dis=log[k];
return max( max( a[dis][i][j], a[dis][i+k-(1<<dis)][j+k-(1<<dis)]), max( a[dis][i][j+k-(1<<dis)], a[dis][i+k-(1<<dis)][j]));
}
void solve()
{
int i,j,k;
for (i=2;i<=n;++i) log[i]=log[i>>1]+1;
for(k=1;(1<<k)<=n;++k)
for (i=n-(1<<k)+1;i>=1;--i)
for (j=n-(1<<k)+1;j>=1;--j)
a[k][i][j]=max(max(a[k-1][i][j],a[k-1][i][j+(1<<(k-1))]),max(a[k-1][i+(1<<(k-1))][j],a[k-1][i+(1<<(k-1))][j+(1<<(k-1))]));
while(m--)
scanf("%d %d %d", &i, &j, &k),printf("%d\n",query(i,j,k));
}
int main()
{
citire();
solve();
return 0;
}