Pagini recente » Cod sursa (job #3178922) | Cod sursa (job #1095658) | Cod sursa (job #3216055) | Cod sursa (job #2044823) | Cod sursa (job #3230336)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, m, row, col, qx, qy, size, endX, endY, logSize, power;
int logVals[505], sparseTable[20][505][505];
int main() {
fin >> n >> m;
logVals[1] = 0;
for (row = 2; row <= n; ++row) {
logVals[row] = logVals[row / 2] + 1;
}
for (row = 1; row <= n; ++row) {
for (col = 1; col <= n; ++col) {
fin >> sparseTable[0][row][col];
}
}
for (int level = 1; level <= logVals[n] + 1; ++level) {
for (row = 1; row + (1 << (level - 1)) <= n; ++row) {
for (col = 1; col + (1 << (level - 1)) <= n; ++col) {
sparseTable[level][row][col] = max(
max(sparseTable[level - 1][row][col], sparseTable[level - 1][row + (1 << (level - 1))][col]),
max(sparseTable[level - 1][row + (1 << (level - 1))][col + (1 << (level - 1))], sparseTable[level - 1][row][col + (1 << (level - 1))])
);
}
}
}
for (int query = 1; query <= m; ++query) {
fin >> qx >> qy >> size;
endX = qx + size - 1;
endY = qy + size - 1;
logSize = logVals[size];
power = (1 << logSize);
fout << max(
max(sparseTable[logSize][qx][qy], sparseTable[logSize][endX - power + 1][qy]),
max(sparseTable[logSize][endX - power + 1][endY - power + 1], sparseTable[logSize][qx][endY - power + 1])
) << "\n";
}
return 0;
}