Pagini recente » Cod sursa (job #2632581) | Cod sursa (job #976185) | Cod sursa (job #1741562) | Cod sursa (job #475696) | Cod sursa (job #2347122)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int N, Q, RMQ[501][501][11], lg[501], x, y, l, d, mx;
int main()
{
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 = 2; i <= N; i++)
lg[i] = lg[i / 2] + 1;
for (int k = 1; k <= lg[N] + 1; k++)
{
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
int j2 = min(N, j + (1 << (k - 1)));
int i2 = min(N, i + (1 << (k - 1)));
RMQ[i][j][k] = max(RMQ[i][j][k - 1], RMQ[i][j2][k - 1]);
RMQ[i][j][k] = max(RMQ[i][j][k], RMQ[i2][j][k - 1]);
RMQ[i][j][k] = max(RMQ[i][j][k], RMQ[i2][j2][k - 1]);
}
}
}
while (Q--)
{
fin >> x >> y >> l;
d = l - (1 << lg[l]);
mx = max(RMQ[x][y][lg[l]], RMQ[x + d][y][lg[l]]);
mx = max(mx, RMQ[x][y + d][lg[l]]);
mx = max(mx, RMQ[x + d][y + d][lg[l]]);
fout << mx << "\n";
}
return 0;
}