Pagini recente » Cod sursa (job #2294896) | Cod sursa (job #3304229)
#include <bits/stdc++.h>
using namespace std;
#define ST_DIO 0
#if ST_DIO
#define fin cin
#define fout cout
#else
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
#endif // ST_DIO
int rmq[10][502][502], lg[502];
int n, mi, q, p, i, j, k;
static inline void Precalc() {}
static inline void Test(int testCur = 0) {
fin >> n >> q;
lg[1] = 0;
for(i = 2; i <= n; i++) lg[i] = 1 + lg[i >> 1];
for(i = 1; i <= n; i++) {
for(j = 1; j <= n; j++) fin >> rmq[0][i][j];
}
for(p = 1; p <= lg[n]; p++) {
for(i = 1; i <= n - (1 << p) + 1; i++) {
for(j = 1; j <= n - (1 << p) + 1; j++) {
rmq[p][i][j] = max({
rmq[p - 1][i ][j ],
rmq[p - 1][i + (1 << (p - 1))][j ],
rmq[p - 1][i ][j + (1 << (p - 1))],
rmq[p - 1][i + (1 << (p - 1))][j + (1 << (p - 1))]
});
}
}
}
while(q--) {
fin >> i >> j >> k;
int lung = (1 << lg[k]) - 1;
int ii = (i + k - 1) - lung;
int jj = (j + k - 1) - lung;
int rasp = max({
rmq[lg[k]][i ][j ],
rmq[lg[k]][ii][j ],
rmq[lg[k]][i ][jj],
rmq[lg[k]][ii][jj]
});
fout << rasp << "\n";
}
}
int main() {
if(ST_DIO) ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
Precalc();
int t = 1;
//fin >> t;
for(int i = 1; i <= t; i++) Test(i);
return 0;
}