Pagini recente » Cod sursa (job #2880814) | Cod sursa (job #1737844) | Cod sursa (job #3256880) | Cod sursa (job #1992271) | Cod sursa (job #3242840)
#include <bits/stdc++.h>
using namespace std;
int rmq[9][502][502];
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;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
cin >> rmq[0][i][j];
cerr << rmq[0][i][j] << "\n";
}
}
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
cout << rmq[0][i][j];
}
}
for (int k = 1; (1 << k) <= N; k++) {
for (int i = 1; i <= N - (1 << k) + 1; i++) {
for (int j = 1; j <= N - (1 << k) + 1; j++) {
int p = (1 << (k - 1));
rmq[k][i][j] = max({rmq[k - 1][i][j], rmq[k - 1][i + p][j],
rmq[k - 1][i][j + p], rmq[k - 1][i + p][j + p]});
}
}
}
while (Q--) {
int l, r, k;
cin >> l >> r >> k;
int shift = 31 - __builtin_clz(k);
int p = k - (1 << shift);
cout << max({rmq[k][l][r], rmq[k][l][r + p], rmq[k][l + p][r],
rmq[k][l + p][r + p]})
<< '\n';
}
return 0;
}