Pagini recente » Cod sursa (job #79428) | Cod sursa (job #2758799) | Cod sursa (job #32239) | Cod sursa (job #1692922) | Cod sursa (job #3189303)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, t, i, j;
int r[10][502][502], lg[502];
static inline void Rmq() {
for(i = 2; i <= n; i++) lg[i] = lg[i / 2] + 1;
for(int p = 1; (1 << p) <= n; p++) {
for(i = 1; i <= n; i++) {
for(j = 1; j <= n; j++) {
r[p][i][j] = r[p - 1][i][j];
int ii = i + (1 << (p - 1));
int jj = j + (1 << (p - 1));
if(ii <= n && jj <= n) {
r[p][i][j] = max(r[p][i][j], r[p - 1][i ][jj]);
r[p][i][j] = max(r[p][i][j], r[p - 1][ii][j ]);
r[p][i][j] = max(r[p][i][j], r[p - 1][ii][jj]);
}
}
}
}
}
static inline int Query(int x, int y, int l) {
int lung = lg[l];
int xx = x + l - (1 << lung);
int yy = y + l - (1 << lung);
return max(max(r[lung][x ][y], r[lung][x ][yy]),
max(r[lung][xx][y], r[lung][xx][yy]));
}
int main() {
fin >> n >> t;
for(i = 1; i <= n; i++) {
for(j = 1; j <= n; j++) fin >> r[0][i][j];
}
Rmq();
while(t--) {
int x, y, l;
fin >> x >> y >> l;
fout << Query(x, y, l) << "\n";
}
return 0;
}