Pagini recente » Cod sursa (job #1354067) | Cod sursa (job #1412874)
#include <cstdio>
#include <cmath>
#define NMAX 505
#define LOGMAX 13
using namespace std;
int n,l,c,val,dim,query;
int best[LOGMAX][NMAX][NMAX];
inline int maxim(int a,int b)
{
return a<b?b:a;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d %d",&n,&query);
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
{
scanf("%d",&val);
best[0][i][j]=val;
}
for (int l=1;l<=12;l++)
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
if (i+(1<<l)<=n+1 && j+(1<<l)<=n+1)
best[l][i][j]=maxim(maxim(best[l-1][i][j],best[l-1][i][j+(1<<(l-1))]),maxim(best[l-1][i+(1<<(l-1))][j],best[l-1][i+(1<<(l-1))][j+(1<<(l-1))]));
for (int q=1;q<=query;q++)
{
int i,j;
scanf("%d %d %d",&i,&j,&dim);
int l=log2(dim-1);
printf("%d\n",maxim(maxim(best[l][i][j],best[l][i][j+dim-(1<<l)]),maxim(best[l][i+dim-(1<<l)][j],best[l][i+dim-(1<<l)][j+dim-(1<<l)])));
}
fclose(stdin);
fclose(stdout);
}