Pagini recente » Cod sursa (job #46422) | Cod sursa (job #2766316) | Cod sursa (job #2305081) | Cod sursa (job #2608350) | Cod sursa (job #3270383)
#include <bits/stdc++.h>
using namespace std;
ifstream fcin("plantatie.in");
ofstream fcout("plantatie.out");
const int N = 505;
int rmq[9][N][N], n, m, e[N];
inline int query(int i, int j, int k)
{
int p = e[k];
int l = (1 << p);
return max({rmq[p][i][j], rmq[p][i + k - l][j], rmq[p][i][j + k - l],
rmq[p][i + k - l][j + k - l]});
}
int main()
{
fcin >> n >> m;
for (int i = 2; i < N; i++)
e[i] = e[i / 2] + 1;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
fcin >> rmq[0][i][j];
for (int p = 1; (1 << p) <= n; p++)
{
int x = 1 << (p - 1);
for (int i = 1; i + x - 1 <= n; i++)
for (int j = 1; j + x - 1 <= n; j++)
rmq[p][i][j] = max({rmq[p - 1][i][j], rmq[p - 1][i + x][j],
rmq[p - 1][i][j + x], rmq[p - 1][i + x][j + x]
});
}
while (m--)
{
int i, j, k;
fcin >> i >> j >> k;
fcout << query(i, j, k) << '\n';
}
return 0;
}