Pagini recente » Cod sursa (job #944286) | Cod sursa (job #1232943) | Cod sursa (job #1761481) | Cod sursa (job #3257867) | Cod sursa (job #2766992)
#include <bits/stdc++.h>
#define LOG_MAX 10
#define N_MAX 505
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int N, Q;
int x, y, l;
int Log[N_MAX];
int RMQ[LOG_MAX][N_MAX][N_MAX];
int Query(int x, int y, int l)
{
int ret = RMQ[Log[l]][x][y];
ret = max(ret, RMQ[Log[l]][x + l - (1 << Log[l])][y]);
ret = max(ret, RMQ[Log[l]][x][y + l - (1 << Log[l])]);
ret = max(ret, RMQ[Log[l]][x + l - (1 << Log[l])][y + l - (1 << Log[l])]);
return ret;
}
int main()
{
fin >> N >> Q;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
fin >> RMQ[0][i][j];
}
}
for (int i = 2; i <= N; i++) {
Log[i] = Log[i / 2] + 1;
}
for (int l = 1; l <= Log[N]; l++) {
for (int i = 1; i <= N - (1 << l) + 1; i++) {
for (int j = 1; j <= N - (1 << l) + 1; j++) {
RMQ[l][i][j] = RMQ[l - 1][i][j];
RMQ[l][i][j] = max(RMQ[l][i][j], RMQ[l - 1][i][j + (1 << (l - 1))]);
RMQ[l][i][j] = max(RMQ[l][i][j], RMQ[l - 1][i + (1 << (l - 1))][j]);
RMQ[l][i][j] = max(RMQ[l][i][j], RMQ[l - 1][i + (1 << (l - 1))][j + (1 << (l - 1))]);
}
}
}
while (Q--) {
fin >> x >> y >> l;
fout << Query(x, y, l) << "\n";
}
return 0;
}