Pagini recente » Cod sursa (job #2339691) | Cod sursa (job #1741205) | Cod sursa (job #3279965) | Cod sursa (job #1251977) | Cod sursa (job #3134272)
#include <fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int matrix[10][505][505];
int E[505];
int main()
{
int n, m, l1, l2, c1, c2, l, niv, lng, e;
in >> n >> m;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
in >> matrix[0][i][j];
}
}
for (int p = 1; l <= n; p++)
{
for (int l1 = 1; l1 <= n - l + 1; l1++)
{
for (int c1 = 1; c1 <= n - l + 1; c1++)
{
l = (1 << p);
l2 = l1 + (l >> 1);
c2 = c1 + (l >> 1);
matrix[p][l1][c1] = max(max(matrix[p - 1][l1][c1], matrix[p - 1][l2][c1]), max(matrix[p - 1][l1][c2], matrix[p - 1][l2][c2]));
}
}
}
E[1] = 0;
for (int i = 2; i <= n; i++)
E[i] = 1 + E[i / 2];
for (int i = 1; i <= m; i++)
{
in >> l1 >> c1 >> lng;
e = E[lng];
niv = (1 << e);
l2 = l1 + lng - niv;
c2 = c1 + lng - niv;
out << max(max(matrix[e][l1][c1], matrix[e][l1][c2]), max(matrix[e][l2][c1], matrix[e][l2][c2])) << "\n";
}
return 0;
}