Pagini recente » Cod sursa (job #83063) | Cod sursa (job #51363) | Cod sursa (job #3236351)
#include <fstream>
using namespace std;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
const int N = 500;
int R[10][N+1][N+1],E[N+1];
int main()
{
int n , m ;
cin>>n>>m;
for(int i = 1;i<=n;i++)
for(int j = 1;j<=n;j++)
cin>>R[0][i][j];
for(int p = 1; (1<<p)<=n;p++)
{
for(int i = 1;i<=n;i++)
for(int j = 1;j<=n;j++)
{
R[p][i][j] = R[p-1][i][j];
int k = i + (1<<(p-1));
int q = j + (1<<(p-1));
if(k<=n&&R[p][i][j]<R[p-1][k][j])
R[p][i][j] = R[p-1][k][j];
if(q<=n&&R[p][i][j]<R[p-1][i][q])
R[p][i][j] = R[p-1][i][q];
if(k<=n&&q<=n&&R[p][i][j]<R[p-1][k][q])
R[p][i][j] = R[p-1][k][q];
}
}
for(int i = 2;i<=n;i++)
E[i] = E[i/2]+1;
for(int i = 1;i<=m;i++)
{
int x, y,s;
cin>>x>>y>>s;
int e = E[s];
int len = (1<<e);
cout<<max(max(R[e][x][y],R[e][x+s-len][y]),max(R[e][x][y+s-len],R[e][x+s-len][y+s-len]))<<'\n';
}
return 0;
}