Pagini recente » Cod sursa (job #231889) | Cod sursa (job #737852) | Cod sursa (job #2673531) | Cod sursa (job #1373414) | Cod sursa (job #2577068)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int n, q;
int mat[505][505];
int rmq[505][505][9];
int main() {
in >> n >> q;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++) {
in >> mat[i][j];
rmq[i][j][0] = mat[i][j];
}
for (int l = 1; l <= 8; l++)
for (int i = 1; i <= n - (1 << l) + 1; i++)
for (int j = 1; j <= n - (1 << l) + 1; j++)
rmq[i][j][l] = max(rmq[i][j][l - 1], max(rmq[i + (1 << (l - 1))][j][l - 1], max(rmq[i][j + (1 << (l - 1))][l - 1], rmq[i + (1 << (l - 1))][j + (1 << (l - 1))][l - 1])));
while (q--) {
int i, j, l, logl;
in >> i >> j >> l;
logl = log2(l);
out << max(rmq[i][j][logl], max(rmq[i + l - (1 << logl)][j][logl], max(rmq[i][j + l - (1 << logl)][logl], rmq[i + l - (1 << logl)][j + l - (1 << logl)][logl]))) << '\n';
}
}