Pagini recente » Cod sursa (job #1598903) | Cod sursa (job #2464254) | Cod sursa (job #2142019) | Cod sursa (job #665578) | Cod sursa (job #2851096)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin ("plantatie.in");
ofstream cout ("plantatie.out");
const int N = 505;
int r[N][N][N];
int l[N];
static inline int mx (int a, int b, int c, int d)
{
return max(max(a, b), max(c, d));
}
int main()
{
int n, m, x, y, lat1;
cin >> n >> m;
for (int i = 2; i <= n; ++i)
l[i] = 1 + l[i >> 1];
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)
{
int lat = (1 << (p - 1));
r[p][i][j] = mx(r[p - 1][i][j], r[p - 1][i - lat][j], r[p - 1][i][j - lat], r[p - 1][i - lat][j - lat]);
}
}
}
for (; m; --m)
{
cin >> x >> y >> lat1;
x += lat1 - 1;
y += lat1 - 1;
int lat2 = l[lat1];
int lat3 = (1 << lat2);
cout << mx (r[lat2][x][y], r[lat2][x - lat1 + lat3][y], r[lat2][x - lat1 + lat3][y - lat1 + lat3], r[lat2][x][y - lat1 + lat3]) << '\n';
}
return 0;
}