Pagini recente » Cod sursa (job #3162166) | Cod sursa (job #734472) | Cod sursa (job #3127056) | Cod sursa (job #3286568) | Cod sursa (job #2858321)
#include <bits/stdc++.h>
using namespace std;
const int LMAX = 10;
const int NMAX = 501;
int rmq[NMAX][NMAX][LMAX], lg[NMAX];
int main() {
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int N, M, l;
cin >> N >> M;
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
cin >> rmq[i][j][0];
lg[1] = 0;
for(int i = 2; i <= N; i++)
lg[i] = lg[i / 2] + 1;
for(int k = 1; (1 << k) <= N; k ++) {
l = (1 << k);
for(int i = 1; i <= N - l + 1; i ++)
for(int j = 1; j <= N - l + 1; j ++)
rmq[i][j][k] = max(max (rmq[i][j][k - 1], rmq[i][j + (l >> 1)][k - 1]), max (rmq[i + (l >> 1)][j][k - 1], rmq[i + (l >> 1)][j + (l >> 1)][k - 1]));
}
while(M--) {
int x, y, k;
cin >> x >> y >> k;
int p = (1 << lg[k]);
cout << max(rmq[x][y][lg[k]], max(rmq[x + k - p][y][lg[k]], max(rmq[x][y + k - p][lg[k]], rmq[x + k - p][y + k - p][lg[k]]))) << '\n';
}
return 0;
}