Pagini recente » Atasamentele paginii Profil ModircaIulia_FMI_UVT | Statistici Mak Marco (marcocuk) | Profil darkbeast | Cod sursa (job #3368835) | Cod sursa (job #3366969)
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
const int NMAX = 5e2, LGMAX = 10;
int n, m, lg2[NMAX + 5], rmq[LGMAX][NMAX + 5][NMAX + 5];
int main() {
fin >> n >> m;
for (int i = 2; i <= n; i++)
lg2[i] = lg2[i / 2] + 1;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)
fin >> rmq[0][i][j];
}
for (int e = 1; (1 << e) <= n; e++) {
for (int i = 1; i + (1 << e) - 1 <= n; i++) {
for (int j = 1; j + (1 << e) - 1 <= n; j++)
rmq[e][i][j] = max({rmq[e - 1][i][j], rmq[e - 1][i + (1 << (e - 1))][j], rmq[e - 1][i][j + (1<<(e - 1))], rmq[e - 1][i + (1 << (e - 1))][j + (1 << (e - 1))]});
}
}
while (m--) {
int l, c, k;
fin >> l >> c >> k;
int p = lg2[k];
fout << max({rmq[p][l][c],rmq[p][l + k - (1 << p)][c], rmq[p][l][c + k - (1 << p)], rmq[p][l + k - (1 << p)][c + k - (1 << p)]}) << "\n";
}
return 0;
}