Pagini recente » Cod sursa (job #18383) | Cod sursa (job #2924353) | Cod sursa (job #16801) | Cod sursa (job #2767610) | Cod sursa (job #3266992)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
#define NMAX 505
int dp[10][NMAX][NMAX];
int log2[NMAX];
int main() {
int n, m;
fin >> n >> m;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j) {
fin >> dp[0][i][j];
}
}
for (int k = 1; (1 << k) <= n; ++k) {
for (int i1 = 1; i1 + (1 << k) - 1 <= n; ++i1) {
for (int j1 = 1; j1 + (1 << k) - 1 <= n; ++j1) {
int i2 = i1 + (1 << (k - 1));
int j2 = j1 + (1 << (k - 1));
dp[k][i1][j1] = max({dp[k - 1][i1][j1], dp[k - 1][i2][j1], dp[k - 1][i1][j2], dp[k - 1][i2][j2]});
}
}
}
log2[1] = 0;
for (int i = 2; i <= n; ++i) {
log2[i] = log2[i / 2] + 1;
}
while (m--) {
int i1, j1, k;
fin >> i1 >> j1 >> k;
int log = log2[k];
int i2 = i1 + k - (1 << log);
int j2 = j1 + k - (1 << log);
fout << max({dp[log][i1][j1], dp[log][i2][j1], dp[log][i1][j2], dp[log][i2][j2]}) << '\n';
}
return 0;
}