Pagini recente » Cod sursa (job #2889030) | Rating Milatinovici Bianca (byanka) | Cod sursa (job #3297702)
// plantatie
#include <fstream>
#include <cmath>
#define is std::ifstream
#define os std::ofstream
int main() { // rmq - vector 3d
is f("plantatie.in");
os g("plantatie.out");
int n, m;
f >> n >> m;
int log2n = log2(n) + 1;
int p[n][n][log2n];
for (int i = 0; i < n; ++i) // O(n^2)
for (int j = 0; j < n; ++j)
f >> p[i][j][0]; // 'matricea' initiala
for (int u = 1; u < log2n; ++u) {
int ind = 1 << u - 1;
for (int s = 0; (s + ind) < n; ++s) // precalculare
for (int t = 0; (t + ind) < n; ++t) // O(n^2logn)
p[s][t][u] = std::max(
std::max(p[s][t][u - 1], p[s][t + ind][u - 1]),
std::max(p[s + ind][t][u - 1], p[s + ind][t + ind][u - 1])
);
}
while(m-- > 0) {
int i, j, k;
f >> i >> j >> k;
--i, --j; // indexare de la 0
int l = log2(k);
int ind = k - (1 << l);
int r = std::max(
std::max(p[i][j][l], p[i][j + ind][l]),
std::max(p[i + ind][j][l], p[i + ind][j + ind][l])
);
g << r << '\n';
}
return 0;
}