Pagini recente » Cod sursa (job #753831) | Cod sursa (job #2096519) | Cod sursa (job #205020) | Cod sursa (job #3355068) | Cod sursa (job #3327716)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
#define in fin
#define out fout
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
const int MAXN = 500;
const int MAXL = 9; // 2^9 = 512 > 500
int n, queries, x, y, l;
int lg2[MAXN+1];
int rmq[MAXL][MAXN+1][MAXN+1];
int main() {
in >> n >> queries;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
in >> rmq[0][i][j];
lg2[1] = 0;
for (int i = 2; i <= n; i++)
lg2[i] = lg2[i / 2] + 1;
for (int x = 1; x <= lg2[n]; x++)
for (int i = 1; i <= n - (1 << x) + 1; i++)
for (int j = 1; j <= n - (1 << x) + 1; j++) {
rmq[x][i][j] = max({
rmq[x - 1][i][j],
rmq[x - 1][i + (1 << (x - 1))][j],
rmq[x - 1][i][j + (1 << (x - 1))],
rmq[x - 1][i + (1 << (x - 1))][j + (1 << (x - 1))]
});
}
for (int i = 1; i <= queries; i++) {
in >> x >> y >> l;
int lgk = lg2[l];
out << max({
rmq[lgk][x][y],
rmq[lgk][x + l - (1 << lgk)][y],
rmq[lgk][x][y + l - (1 << lgk)],
rmq[lgk][x + l - (1 << lgk)][y + l - (1 << lgk)]
}) << '\n';
}
return 0;
}