Pagini recente » Cod sursa (job #3345385) | Cod sursa (job #181731) | Cod sursa (job #3345375) | Cod sursa (job #3366992) | Cod sursa (job #3366971)
#include <bits/stdc++.h>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
#define NM 501
int v[NM][NM], rmq[10][NM][NM], l2[NM];
int maxim(int a, int b, int c, int d) {
return max(a, max(b, max(c, d)));
}
int main() {
int n, m, i, j, k, p, e, nr;
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] = maxim(rmq[i - 1][j - p][k - p],rmq[i - 1][j - p][k], 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;
i += k - 1;
j += k - 1;
e = l2[k];
p = 1 << e;
nr = p - k;
out << maxim(rmq[e][i + nr][j + nr], rmq[e][i + nr][j], rmq[e][i][j + nr], rmq[e][i][j]) << endl;
}
return 0;
}