Pagini recente » Cod sursa (job #3231257) | Cod sursa (job #2147701) | Cod sursa (job #3231841)
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
const int MAX_N = 505;
const int MAX_LOG = 10;
int n, m;
int a[MAX_N][MAX_N][MAX_LOG];
int main() {
fin >> n >> m;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
fin >> a[i][j][0];
int lg = log2(n);
for (int t = 1; t <= lg; ++t) {
int dr = (1 << t);
for (int i = 1; i + dr <= n + 1; ++i)
for (int j = 1; j + dr <= n + 1; ++j)
a[i][j][t] = max({
a[i][j][t - 1],
a[i][j + dr / 2][t - 1],
a[i + dr / 2][j][t - 1],
a[i + dr / 2][j + dr / 2][t - 1]
});
}
for (int i = 1; i <= m; ++i) {
int x, y, k;
fin >> x >> y >> k;
int lg = log2(k);
int xf = x + k;
int yf = y + k;
int dr = (1 << lg);
int v = max({
a[x][y][lg],
a[xf - dr][y][lg],
a[xf - dr][yf - dr][lg],
a[x][yf - dr][lg]
});
fout << v << '\n';
}
return 0;
}