Pagini recente » Cod sursa (job #184958) | Cod sursa (job #1940343) | Cod sursa (job #2753330)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int const MAX=250001;
int a[501][501];
int mat[501][501][18];
int n,m;
int query(int x,int y, int lung)
{
int k =0;
while((1<<k) <=lung)
++k;
if(1<<(k-1) == lung)
return mat[x][y][k];
return max(max(mat[x][y][k],mat[x][y+lung-(1<<(k-1))][k]),max(mat[x+lung-(1<<(k-1))][y][k],mat[x+lung-(1<<(k-1))][y+lung-(1<<(k-1))][k]));
}
int main()
{
fin>>n>>m;
for(int i =1; i <= n; ++i)
for(int j =1; j <= n; ++j)
{
fin>>a[i][j];
mat[i][j][1]=a[i][j];
}
for(int k =2; k <= 18; ++k)
for(int i =1; i + (1<<(k-1)) -1<= n; ++i)
for(int j =1; j +(1<<(k-1))-1<= n; ++j)
mat[i][j][k]=max(max(mat[i][j][k-1],mat[i][j+(1<<(k-2))][k-1]),max(mat[i+(1<<(k-2))][j][k-1],mat[i+(1<<(k-2))][j+(1<<(k-2))][k-1]));
for(int i =1; i <= m; ++i)
{
int x,y,lung;
fin>>x>>y>>lung;
fout<<query(x,y,lung)<<"\n";
}
return 0;
}