Pagini recente » Cod sursa (job #3348010) | Cod sursa (job #3366967) | Cod sursa (job #3366968) | Cod sursa (job #3366970) | Cod sursa (job #3366966)
#include <bits/stdc++.h>
using namespace std;
ifstream in("plantatie.in");
ofstream out("pmantatie.out");
#define N 501
int v[N][N], rmq[10][N][N], l2[N];
int main() {
int n, m, i, j, k, p, e;
in >> n >> m;
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
in >> v[i][j];
rmq[0][i][j] = v[i][j];
}
}
for (i = 1; (1 << i) <= n;i++) {
for (j = 1; j <= n; j++) {
for (k = 1; k <= n; k++) {
p = 1 << (i - 1);
rmq[i][j][k] = max(rmq[i - 1][j - p][k - p], max(rmq[i - 1][j - p][k], max(rmq[i - 1][j][k - p], rmq[i - 1][j][k])));
}
}
}
for (i = 1;i <= n;i++) {
l2[i] = l2[i >> 1] + 1;
}
while (m--) {
in >> i >> j >> k;
e = l2[k];
p = 1 << e;
out << max(rmq[e][i - k +p][j - k + p], max(rmq[e][i - k + p][j], max(rmq[e][i][j - k + p], rmq[e][i][j]))) << endl;
}
return 0;
}