Pagini recente » Cod sursa (job #551940) | Cod sursa (job #2981756) | Cod sursa (job #1583831) | Cod sursa (job #295571) | Cod sursa (job #3274619)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, q, p, i, j, rmq[502][502][20];
int lg[502], lat;
int main() {
//ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
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[i][j][0];
}
for(p = 1; p <= lg[n]; p++) {
int lung = (1 << (p - 1));
for(i = 1; i <= n - (1 << p) + 1; i++) {
for(j = 1; j <= n - (1 << p) + 1; j++) {
rmq[i][j][p] = max({rmq[i ][j ][p - 1],
rmq[i ][j + lung][p - 1],
rmq[i + lung][j ][p - 1],
rmq[i + lung][j + lung][p - 1]});
}
}
}
while(q--) {
fin >> i >> j >> lat;
int in = i + lat - 1;
int jn = j + lat - 1;
int k = lg[lat];
int lung = (1 << k) - 1;
int ma1 = max(rmq[i ][j][k], rmq[i ][jn - lung][k]);
int ma2 = max(rmq[in - lung][j][k], rmq[in - lung][jn - lung][k]);
fout << max(ma1, ma2) << "\n";
}
return 0;
}