Pagini recente » Cod sursa (job #720146) | Cod sursa (job #1912247) | Cod sursa (job #1352856) | Probleme de Taietura | Cod sursa (job #2674945)
#include <cmath>
#include <fstream>
#include <iostream>
using namespace std;
const int NMAX = 5e2;
int a[(int)log2(NMAX) + 5][NMAX + 5][NMAX + 5];
int main()
{
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int n, m, x, y, z, i, j, k, dist;
in >> n >> m;
for(i = 1; i <= n; ++ i)
for(j = 1; j <= n; ++ j)
in >> a[0][i][j];
for(i = 1; i <= (int)log2(n); ++ i)
for(j = 1; j <= n - (1 << i) + 1; ++ j)
for(k = 1; k <= n - (1 << i) + 1; ++ k)
a[i][j][k] = max(a[i - 1][j][k], max(a[i - 1][j + (1 << (i - 1))][k], max(a[i - 1][j][k + (1 << (i - 1))], a[i - 1][j + (1 << (i - 1))][k + (1 << (i - 1))])));
for(i = 1; i <= m; ++ i)
{
in >> x >> y >> z;
dist = (int)log2(z);
out << max(a[dist][x][y], max(a[dist][x + z - (1 << dist)][y], max(a[dist][x][y + z - (1 << dist)], a[dist][x + z - (1 << dist)][y + z - (1 << dist)]))) << '\n';
}
return 0;
}