Pagini recente » Cod sursa (job #3366968) | Cod sursa (job #3366970) | Cod sursa (job #3366966) | Cod sursa (job #3366987) | Cod sursa (job #3366977)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("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;
fin >> n >> m;
cout << 1;
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
fin >> 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 = 2;i <= n;i++) {
l2[i] = l2[i >> 1] + 1;
}
while (m--) {
fin >> i >> j >> k;
i += k - 1;
j += k - 1;
e = l2[k];
p = 1 << e;
nr = p - k;
fout << maxim(rmq[e][i + nr][j + nr], rmq[e][i + nr][j], rmq[e][i][j + nr], rmq[e][i][j]) << endl;
}
return 0;
}