Pagini recente » Cod sursa (job #1019425) | Cod sursa (job #1803708) | Cod sursa (job #509387) | Cod sursa (job #1066434) | Cod sursa (job #2101415)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream in ("plantatie.in");
ofstream out("plantatie.out");
int n, m, r[501][501][10], rez;
void init_rmq() {
for (int k = 1; k <= 9; k++) {
for (int i = 1; i <= n - (1 << k) + 1; i++) {
for (int j = 1; j <= n - (1 << k) + 1; j++) {
r[i][j][k] = max(r[i][j][k - 1],
max(r[i][j + (1 << (k - 1))][k - 1],
max(r[i + (1 << (k - 1))][j][k - 1],
r[i + (1 << (k - 1))][j + (1 << (k - 1))][k - 1])));
}
}
}
}
int main() {
in >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
in >> r[i][j][0];
}
}
init_rmq();
int a, b, c, p;
for (int i = 1; i <= m; i++) {
in >> a >> b >> c;
p = log2(c);
out << max(r[a][b][c],
max(r[a][b + c - (1 << p)][p],
max(r[a + c - (1 << p)][b][p], r[a + c - (1 << p)][b + c - (1 << p)][p]))) << "\n";
}
return 0;
}