Pagini recente » Cod sursa (job #2441857) | Cod sursa (job #1461457) | Cod sursa (job #134144) | Cod sursa (job #1122294) | Cod sursa (job #2452859)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, q;
int dp[10][510][510];
int max(int x, int y, int z, int t) {
return max(max(x, y), max(z, t));
}
int main() {
fin >> n >> q;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
fin >> dp[0][i][j];
for (int log = 1; log < 10; log++)
for (int i = 1; i + (1 << log) <= n + 1; i++)
for (int j = 1; j + (1 << log) <= n + 1; j++) {
int pwr = (1 << (log - 1));
dp[log][i][j] = max(
dp[log - 1][i][j],
dp[log - 1][i + pwr][j],
dp[log - 1][i][j + pwr],
dp[log - 1][i + pwr][j + pwr]
);
}
for (int i = 0; i < q; i++) {
int x, y, len;
fin >> x >> y >> len;
int log = log2(len), pwr = (1 << log);
fout << max(
dp[log][x][y],
dp[log][x + len - pwr][y],
dp[log][x][y + len - pwr],
dp[log][x + len - pwr][y + len - pwr]
) << '\n';
}
fout.close();
return 0;
}