Pagini recente » Cod sursa (job #1474903) | Cod sursa (job #401336) | Cod sursa (job #761746) | Cod sursa (job #2162896) | Cod sursa (job #3330573)
#include <bits/stdc++.h>
using namespace std;
int main() {
// ios::sync_with_stdio(false);
// cin.tie(nullptr);
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int n, m;
cin >> n >> m;
vector<vector<int>> input(n, vector<int>(n));
for (auto &vec : input)
for (auto &x : vec)
cin >> x;
int max_lg = __lg(n);
vector<vector<vector<int>>> rmq(max_lg + 1);
rmq[0] = move(input);
for (int k = 0; k < max_lg; k++)
{
int len = 1 << k;
rmq[k + 1] = vector<vector<int>>(n - (len<<1) + 1, vector<int>(n - (len << 1) + 1));
for (int i = 0; i + len < rmq[k].size(); i++)
for (int j = 0; j + len < rmq[k].size(); j++)
rmq[k+1][i][j] = max({rmq[k][i][j], rmq[k][i + len][j], rmq[k][i][j + len], rmq[k][i + len][j + len]});
}
while (m--)
{
int a, b, len;
cin >> a >> b >> len;
a--;b--;
int len_lg = __lg(len);
cout << max({rmq[len_lg][a][b], rmq[len_lg][a + len - (1<<len_lg)][b], rmq[len_lg][a][b + len - (1<<len_lg)], rmq[len_lg][a + len - (1<<len_lg)][b + len - (1<<len_lg)]}) << '\n';
}
}