Pagini recente » Cod sursa (job #1479140) | Cod sursa (job #3309669) | Cod sursa (job #3309665) | Cod sursa (job #1479524) | Cod sursa (job #3358651)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("divquery.in");
ofstream fout("divquery.out");
int ans[500][500][10];
int main() {
int n, q;
fin >> n >> q;
vector<int> v(n);
int cnt = -1;
for (int k = 0; k < n; k++) {
cnt++;
for (int i = 0; i < n; i++) fin >> v[i];
const int p = 31 - __builtin_clz(n);
vector<vector<int>> rmq(p + 1, vector<int>(n));
for (int i = 0; i < n; i++) {
rmq[0][i] = v[i];
ans[cnt][i][0] = v[i];
}
for (int i = 1; i <= p; i++) {
for (int j = 0; j + (1 << i) <= n; j++) {
rmq[i][j] = max(rmq[i - 1][j], rmq[i-1][j+(1<<(i-1))]);
ans[cnt][j][i] = rmq[i][j];
}
}
}
while (q--) {
int a, b, l;
fin >> a >> b;
fin >> l;
a--; b--;
const int y = 31 - __builtin_clz(l);
int rez = 0;
for (int i = 0 + a; i < l + a; i++) {
rez = max(rez, max(ans[i][b][y], ans[i][b + l- (1 << y)][y]));
}
fout << rez << '\n';
}
return 0;
}