Pagini recente » Cod sursa (job #631029) | Cod sursa (job #3190031) | Cod sursa (job #620478) | Cod sursa (job #2239997) | Cod sursa (job #2229527)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, q, lg[502], rmq[502][502][10], x, y, k;
int main()
{
fin >> n >> q;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
fin >> rmq[i][j][0];
lg[1] = 0;
for (int i = 2; i <= n; i++)
lg[i] = 1 + lg[i / 2];
for (int k = 1; k <= lg[n]; 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][j][k - 1], rmq[i][j + aux][k - 1]), max(rmq[i + aux][j][k - 1], rmq[i + aux][j + aux][k - 1]));
}
for (int i = 1; i <= q; i++) {
fin >> x >> y >> k;
int q = lg[k];
int p2 = (1 << q);
int x1 = x + k - 1;
int y1 = y + k - 1;
fout << max(max(rmq[x][y][q], rmq[x][y1 - p2 + 1][q]), max(rmq[x1 - p2 + 1][y][q], rmq[x1 - p2 + 1][y1 - p2 + 1][q])) << "\n";
}
return 0;
}