Pagini recente » Cod sursa (job #2673516) | Cod sursa (job #2406588) | Cod sursa (job #776566) | Cod sursa (job #2089633) | Cod sursa (job #2230018)
#include <bits/stdc++.h>
using namespace std;
int log1[502],rmq[505][505][10];
int main()
{
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n,q,x,y,k,p = 0;
fin >> n >> q;
for (int i = 1;i <= n;i++)
for (int j = 1;j <= n;j++)
fin >> rmq[i][j][0];
for (int i = 0;i <= n;i++)
{
log1[i] = p;
if (i == 2 * (1 << p))
p++;
}
for (int k = 1;k <= p;k++)
for (int i = 1;i <= n - (1 << k) + 1;i++)
for (int j = 1;j <= n - (1 << k) + 1;j++)
{
int aux = (1 << (k - 1));
rmq[i][j][k] = max(max(rmq[i + aux][j + aux][k - 1], rmq[i + aux][j][k - 1]), max(rmq[i][j + aux][k - 1], rmq[i][j][k - 1]));
}
for (int i = 1;i <= q;i++)
{
fin >> x >> y >> k;
int a = log1[k];
int b = (1 << a);
int x1 = x + k - 1;
int y1 = y + k - 1;
fout << max(max(rmq[x][y][a], rmq[x][y1 - b + 1][a]), max(rmq[x1 - b + 1][y][a], rmq[x1 - b + 1][y1 - b + 1][a])) << '\n';
}
return 0;
}