Pagini recente » Cod sursa (job #2988928) | Cod sursa (job #322546) | Cod sursa (job #1288956) | Cod sursa (job #2828759) | Cod sursa (job #1505849)
#include <fstream>
using namespace std;
ifstream fin ("plantatie.in");
ofstream fout ("plantatie.out");
#define NMAX 501
#define LOGMAX 10
int n, m;
int a[NMAX], mat[LOGMAX][NMAX][NMAX];
int main()
{
int q, i1, j1, k1, l, p;
fin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
fin >> mat[0][i][j];
for (int i = 2; i <= n; i++) a[i] = 1 + a[i / 2];
for (int k = 1; k <= a[n]; k++)
{
q = 1 << (k - 1);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
mat[k][i][j] = max(mat[k - 1][i][j], max(mat[k - 1][i][j + q], max(mat[k - 1][i + q][j], mat[k - 1][i + q][j + q])));
}
while (m)
{
fin >> i1 >> j1 >> k1;
l = a[k1];
p = (1 << l);
fout << max(mat[l][i1][j1], max(mat[l][i1 + k1 - p][j1], max(mat[l][i1][j1 + k1 - p], mat[l][i1 + k1 - p][j1 + k1 - p]))) << '\n';
m--;
}
return 0;
}