Pagini recente » Cod sursa (job #3276084) | Cod sursa (job #3274714) | Cod sursa (job #913305) | Cod sursa (job #1782016) | Cod sursa (job #3297075)
#include <bit>
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
int plantatie[500][500][9];
int main() {
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int n, m; cin >> n >> m;
int log2n = log2(n) + 1;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
cin >> plantatie[i][j][0];
}
}
for(int p = 1; p < log2n; p++) {
for(int i = 0; i < n + (1 << p - 1); i++) {
for(int j = 0; j < n + (1 << p - 1); j++) {
plantatie[i][j][p] = max(
max(plantatie[i][j][p-1], plantatie[i + (1 << p - 1)][j][p - 1]),
max(plantatie[i][j + (1 << p - 1)][p - 1], plantatie[i + (1 << p - 1)][j + (1 << p - 1)][p - 1])
);
}
}
}
while(m-- > 0) {
int i, j, l; cin >> i >> j >> l;
i--;j--;
int p = log2(l);
int offs = l - (1 << p);
int res = max(
max(plantatie[i][j][p], plantatie[i + offs][j + offs][p]),
max(plantatie[i + offs][j][p], plantatie[i][j + offs][p])
);
cout << res << "\n";
}
::cin >> n;
}