Pagini recente » Cod sursa (job #2959495) | Cod sursa (job #88970) | Cod sursa (job #2478843) | Cod sursa (job #18081) | Cod sursa (job #3242849)
#include <bits/stdc++.h>
using namespace std;
int rmq[9][502][502];
int main() {
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];
}
}
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;
}