Pagini recente » Cod sursa (job #1625726) | Cod sursa (job #1403800) | Cod sursa (job #1993268) | Cod sursa (job #1665517) | Cod sursa (job #2778545)
#include <iostream>
#include <cstdio>
#define NMAX 502
#define LOG 9
using namespace std;
int N, M, m[NMAX][NMAX];
int rmq[2*NMAX][2*NMAX][LOG], log[NMAX];
//rmq[i][j][l] = max(
int main()
{
freopen("plantatie.in", "r", stdin);
freopen("plantatie.out", "w", stdout);
cin >> N >> M;
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= N; j++)
{
cin >> m[i][j];
rmq[i][j][0] = m[i][j];
}
}
for(int l = 1; l < LOG; l++) {
for(int i = 1; i <= N; i++) {
for(int j = 1; j <= N; j++) {
rmq[i][j][l] = max(max(max(rmq[i][j][l-1], rmq[i + (1 << (l-1))][j][l-1]), rmq[i + (1 << (l-1))][j + (1 << (l-1))][l-1]), rmq[i][j + (1 << (l-1))][l-1]);
}
}
}
log[0] = log[1] = 0;
for(int i = 2; i <= N; i++) {
log[i] = 1 + log[i/2];
}
for(int z = 1; z <= M; z++) {
int i, j, k;
cin >> i >> j >> k;
int L = log[k];
int r = 0;
r = max(max(max(rmq[i][j][L], rmq[i][(j+k) - (1 << L)][L]),rmq[(i+k) - (1 << L)][(j+k) - (1 << L)][L]), rmq[(i+k) - (1 << L)][j][L]);
cout << r << endl;
}
return 0;
}