Pagini recente » Cod sursa (job #1942082) | Cod sursa (job #2739222) | Cod sursa (job #1213509) | Cod sursa (job #1499431) | Cod sursa (job #3332727)
#include <bits/stdc++.h>
using namespace std;
#define USE_STD_IO 0
#if USE_STD_IO
#define fin cin
#define fout cout
#else
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
#endif // USE_STD_IO
int n, q, i, j, l, lg[502];
int rmq[9][502][502];
static inline int Query(int i, int j, int lat) {
int k = lg[lat];
int add = lat - (1 << k);
return max({
rmq[k][i ][j ],
rmq[k][i ][j + add],
rmq[k][i + add][j ],
rmq[k][i + add][j + add]
});
}
int main() {
if(USE_STD_IO) ios_base::sync_with_stdio(false);
fin.tie(NULL);
fout.tie(NULL);
fin >> n >> q;
for(i = 1; i <= n; i++) {
for(j = 1; j <= n; j++) {
fin >> rmq[0][i][j];
}
}
for(i = 2; i <= n; i++) lg[i] = 1 + lg[i >> 1];
for(int limN, add, p = 1; p <= lg[n]; p++) {
limN = n - (1 << p) + 1;
add = (1 << (p - 1));
for(i = 1; i <= limN; i++) {
for(j = 1; j <= limN; j++) {
rmq[p][i][j] = max({
rmq[p - 1][i ][j ],
rmq[p - 1][i ][j + add],
rmq[p - 1][i + add][j ],
rmq[p - 1][i + add][j + add]
});
}
}
}
while(q--) {
fin >> i >> j >> l;
fout << Query(i, j, l) << "\n";
}
return 0;
}