Pagini recente » Cod sursa (job #2919463) | Cod sursa (job #60701) | Cod sursa (job #85026) | Cod sursa (job #386213) | Cod sursa (job #3232928)
#include <fstream>
#include <algorithm>
using namespace std;
int maxx(int a, int b, int c, int d)
{
return max(max(a, b), max(c, d));
}
const int N = 501;
int n, q;
int log[N];
int A[N][N][9];
int main()
{
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
for (int i = 2; i < N; i++)
{
log[i] = 1 + log[i / 2];
}
fin >> n >> q;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
fin >> A[i][j][0];
}
}
for (int k = 1; (1 << k) <= n; k++)
{
for (int i = 1; i + (1 << k) - 1 <= n; i++)
{
for (int j = 1; j + (1 << k) - 1 <= n; j++)
{
A[i][j][k] = maxx(A[i][j][k - 1], A[i][j + (1 << (k - 1))][k - 1], A[i + (1 << (k - 1))][j][k - 1], A[i + (1 << (k - 1))][j + (1 << (k - 1))][k - 1]);
}
}
}
int r1, c1, r2, c2, k;
while (q--)
{
fin >> r1 >> c1 >> k;
r2 = r1 + k - 1;
c2 = c1 + k - 1;
k = log[k];
fout << maxx(A[r1][c1][k], A[r1][c2 - (1 << k) + 1][k], A[r2 - (1 << k) + 1][c1][k], A[r2 - (1 << k) + 1][c2 - (1 << k) + 1][k]) << endl;
}
return 0;
}