Pagini recente » Cod sursa (job #425355) | Cod sursa (job #2498165) | Cod sursa (job #1383038) | Cod sursa (job #2865758) | Cod sursa (job #3265602)
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define sz(x) (int)(x.size())
#define all(a) a.begin(), a.end()
#define nl '\n'
const int N = 505, INF = 1e9, mod = 998244353;
int n, q, E[N], r[18][N][N];
inline int query(int i, int j, int l) {
int len = E[l];
int lin = i + l - 1 - (1 << len) + 1;
int col = j + l - 1 - (1 << len) + 1;
return max({ r[len][i][j], r[len][i][col], r[len][lin][j], r[len][lin][col] });
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
freopen("plantatie.in", "r", stdin);
freopen("plantatie.out", "w", stdout);
cin >> n >> q;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> r[0][i][j];
}
}
E[1] = 0;
for (int i = 2; i <= n; i++) {
E[i] = 1 + E[i / 2];
}
for (int p = 1; (1 << p) <= n; p++) {
for (int i = 1; i <= n - (1 << p) + 1; i++) {
for (int j = 1; j <= n - (1 << p) + 1; j++) {
int lin = i + (1 << (p - 1));
int col = j + (1 << (p - 1));
r[p][i][j] = max({ r[p - 1][i][j], r[p - 1][lin][j], r[p - 1][i][col], r[p - 1][lin][col] });
}
}
}
while (q--) {
int x, y, k;
cin >> x >> y >> k;
cout << query(x, y, k) << '\n';
}
}