Pagini recente » Cod sursa (job #1016891) | Cod sursa (job #1113727) | Cod sursa (job #2786289) | Cod sursa (job #132540) | Cod sursa (job #2901181)
#include <fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
const int NMAX = 500;
const int LMAX = 8;
int r[LMAX + 1][NMAX + 1][NMAX + 1], log[NMAX + 1];
int maxim(int l, int c, int lat)
{
int e = log[lat];
int p = (1<<e);
return max(max(r[e][l - lat + p][c - lat + p], r[e][l - lat + p][c]), max(r[e][l][c - lat + p], r[e][l][c]));
}
int main()
{
int n, q;
in >> n >> q;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
in >> r[0][i][j];
}
}
for (int e = 1; (1 << e) <= n; e++)
{
for (int i = (1 << e); i <= n; i++)
{
for (int j = (1 << e); j <= n; j++)
{
int p = (1 << (e - 1));
r[e][i][j] = max(max(r[e-1][i-p][j-p], r[e-1][i-p][j]),
max(r[e-1][i][j-p], r[e-1][i][j]));
}
}
}
log[1] = 0;
for (int j = 2; j <= n; j++)
{
log[j] = 1 + log[j/2];
}
for (int i = 0; i < q; i++)
{
int l, c, lat;
in >> l >> c >> lat;
l += lat - 1;
c += lat - 1;
out << maxim(l, c, lat) << "\n";
}
in.close();
out.close();
return 0;
}