Pagini recente » Cod sursa (job #767581) | Cod sursa (job #933111) | Cod sursa (job #534242) | Cod sursa (job #571747) | Cod sursa (job #3137620)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int t[505][505][10];
void preprocess(int n){
for(int k = 1; (1 << k) <= n; k++){
int x = (1 << (k - 1));
for(int i = 1; i + (1 << k) - 1 <= n; i++)
for(int j = 1; j + (1 << k) - 1 <= n; j++)
t[i][j][k] = max(max(t[i][j][k - 1], t[i + x][j + x][k - 1]), max(t[i + x][j][k - 1], t[i][j + x][k - 1]));
}
}
int rmq(int i, int j, int k){
int l = log2(k);
int p = (1 << l);
return max(max(t[i][j][l], t[i + k - p][j + k - p][l]), max(t[i + k - p][j][l], t[i][j + k + p][l]));
}
int main()
{
int n,m,i,j,x,y,k;
fin >> n >> m;
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++) fin >> t[i][j][0];
preprocess(n);
for(i = 1; i <= m; i++){
fin >> x >> y >> k;
fout << rmq(x,y,k) << "\n";
}
return 0;
}