Pagini recente » Cod sursa (job #1187708) | Cod sursa (job #1428466) | Cod sursa (job #61540) | Cod sursa (job #1296706) | Cod sursa (job #2837053)
#include <fstream>
#define DIM 501
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int maxOf(int a, int b, int c, int d)
{
return max(max(a, b), max(c, d));
}
int r[9][DIM][DIM];
int e[DIM];
int main()
{
int n, m;
fin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
fin >> r[0][i][j];
for (int p = 1, lat = 2; lat <= n; p++, lat *= 2)
for (int i1 = 1; i1 <= n - lat + 1; i1++)
for (int j1 = 1; j1 <= n - lat + 1; j1++)
{
int i2 = i1 + (lat >> 1);
int j2 = j1 + (lat >> 1);
r[p][i1][j1] = maxOf(r[p - 1][i1][j1],
r[p - 1][i2][j1],
r[p - 1][i1][j2],
r[p - 1][i2][j2]);
}
e[1] = 0;
for (int i = 2; i <= n; i++)
e[i] = 1 + e[i / 2];
int x, y, l;
for (int i = 1; i <= m; i++)
{
fin >> x >> y >> l;
int exp = e[l];
int pow = (1 << exp);
int maxValue = maxOf(
r[exp][x][y],
r[exp][x + l - pow][y],
r[exp][x][y + l - pow],
r[exp][x + l - pow][y + l - pow]
);
fout << maxValue << '\n';
}
return 0;
}