Pagini recente » Cod sursa (job #2765282) | Cod sursa (job #848269) | Cod sursa (job #2863047) | Cod sursa (job #434426) | Cod sursa (job #2229535)
#include <fstream>
using namespace std;
ifstream cin ("plantatie.in");
ofstream cout ("plantatie.out");
const int NMAX = 500;
int n, m;
int p, x, y, z;
int v[1 + NMAX][1 + NMAX];
int rmq[1 + NMAX][1 + NMAX][10];
int log[1 + NMAX];
int main() {
cin >> n >> m;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
cin >> v[i][j];
rmq[i][j][0] = v[i][j];
}
}
// rmq 2D
for(int i = 2; i <= n; i++)
log[i] = log[i / 2] + 1;
for(int k = 1; k <= log[n]; k++) {
for(int i = 1; i <= n - (1 << (k - 1)); i++) {
for(int j = 1; j <= n - (1 << (k - 1)); j++) {
p = (1 << (k - 1));
rmq[i][j][k] = max(rmq[i][j][k - 1], max(rmq[i + p][j][k - 1], max(rmq[i][j + p][k - 1], rmq[i + p][j + p][k - 1])));
}
}
}
for(; m; m--) {
cin >> x >> y >> z;
p = (1 << (log[z]));
int i = x + z - 1, j = y + z - 1;
cout << max(rmq[x][y][log[z]], max(rmq[i - p + 1][y][log[z]], max(rmq[x][j - p + 1][log[z]], rmq[i - p + 1][j - p + 1][log[z]]))) << "\n";
}
return 0;
}