Pagini recente » Cod sursa (job #2627888) | Cod sursa (job #1581803) | Cod sursa (job #1024625) | tema | Cod sursa (job #2602865)
#include <fstream>
int n, t, v[100][100], rmq[9][505][505], log2[505], i, j, k;
int main() {
std::ifstream fin("plantatie.in");
std::ofstream fout("plantatie.out");
fin >> n >> t;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
fin >> rmq[0][i][j];
}
}
for (int k = 1; (1 << k) <= n; k++) {
for (int i = 0; i < n - (1 << k) + 1; i++) {
for (int j = 0; j < n - (1 << k) + 1; j++) {
rmq[k][i][j] = std::max(std::max(rmq[k - 1][i][j], rmq[k - 1][i + (1 << k - 1)][j]),
std::max(rmq[k - 1][i][j + (1 << k - 1)],
rmq[k - 1][i + (1 << k - 1)][j + (1 << k - 1)]));
}
}
}
for (int i = 2; i < n; i++) {
log2[i] = log2[i / 2] + 1;
}
while (t--) {
fin >> i >> j >> k;
i--;
j--;
fout << std::max(std::max(rmq[log2[k]][i][j], rmq[log2[k]][i + k - (1 << log2[k])][j + k - (1 << log2[k])]),
std::max(rmq[log2[k]][i][j + k - (1 << log2[k])], rmq[log2[k]][i + k - (1 << log2[k])][j]))
<< '\n';
}
return 0;
}