Pagini recente » Cod sursa (job #438364) | Cod sursa (job #539388) | Cod sursa (job #374251) | Cod sursa (job #1690637) | Cod sursa (job #3318847)
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
int rmq[501][501][9];
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
ifstream cin{"plantatie.in"};
ofstream cout{"plantatie.out"};
int N, Q;
cin >> N >> Q;
// vector<vector<vector<int>>> rmq(N + 1,
// vector<vector<int>>(N + 1, vector<int>(9)));
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
cin >> rmq[i][j][0];
}
}
for (int k = 1; k < 9; k++) {
for (int i = 1; i + (1 << k) - 1 <= N; i++) {
for (int j = 1; j + (1 << k) - 1 <= N; j++) {
rmq[i][j][k] =
max({rmq[i][j][k - 1], rmq[i + (1 << (k - 1))][j][k - 1],
rmq[i][j + (1 << (k - 1))][k - 1],
rmq[i + (1 << (k - 1))][j + (1 << (k - 1))][k - 1]});
}
}
}
while (Q--) {
int i, j, k;
cin >> i >> j >> k;
int p = 31 - __builtin_clz(k);
int aux_i = i + k - (1 << p);
int aux_j = j + k - (1 << p);
cout << max({rmq[i][j][p], rmq[aux_i][j][p], rmq[i][aux_j][p],
rmq[aux_i][aux_j][p]})
<< '\n';
}
return 0;
}