Pagini recente » Cod sursa (job #407192) | Cod sursa (job #1017698) | Cod sursa (job #3127853) | Cod sursa (job #2943030) | Cod sursa (job #2851476)
#include <iostream>
#include <fstream>
#include <cmath>
#define int long long
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
const int N = 500, LOG = 9;
int rmq[LOG + 1][N + 1][N + 1];
signed main(){
int n, q;
fin >> n >> q;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
fin >> rmq[0][i][j];
for(int p = 1; p <= LOG; p++){
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
int lat = (1 << (p - 1));
rmq[p][i][j] = max(
max( rmq[p - 1][i - lat][j], rmq[p - 1][i][j - lat]),
max( rmq[p - 1][i][j], rmq[p - 1][i - lat][j - lat])
);
}
}
}
while(q--){
int l, c, k;
fin >> l >> c >> k;
l += (k - 1);
c += (k - 1);
int p = log2(k), lat2 = (1 << p);
fout << (
max( rmq[p][l - k + lat2][c - k + lat2], rmq[p][l - k + lat2][c]),
max( rmq[p][l][c - k + lat2], rmq[p][l][c])
) << '\n';
}
return 0;
}