Pagini recente » Cod sursa (job #3223059) | Cod sursa (job #2737978) | Cod sursa (job #2678258) | Cod sursa (job #923859) | Cod sursa (job #1413287)
#include <fstream>
using namespace std;
const int kMaxN = 505;
const int kMaxLg = 9;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int N, M, lg2[kMaxN];
int a[kMaxLg][kMaxN][kMaxN];
int Query(int x, int y, int l) {
int lg = lg2[l];
return max(max(a[lg][x][y], a[lg][x + l - (1 << lg)][y]),
max(a[lg][x][y + l - (1 << lg)], a[lg][x + l - (1 << lg)][y + l - (1 << lg)]));
}
int main() {
fin >> N >> M;
for (int i = 1; i <= N; ++i)
for (int j = 1; j <= N; ++j)
fin >> a[0][i][j];
for (int i = 2; i <= N; ++i)
lg2[i] = lg2[i >> 1] + 1;
for (int k = 1; k <= lg2[N]; ++k)
for (int i = 1; i <= N - (1 << k) + 1; ++i)
for (int j = 1; j <= N - (1 << k) + 1; ++j)
a[k][i][j] = max(max(a[k - 1][i][j], a[k - 1][i + (1 << (k - 1))][j]),
max(a[k - 1][i][j + (1 << (k - 1))], a[k - 1][i + (1 << (k - 1))][j + (1 << (k - 1))]));
while (M--) {
int x, y, l;
fin >> x >> y >> l;
fout << Query(x, y, l) << "\n";
}
return 0;
}