Pagini recente » Cod sursa (job #1693559) | Cod sursa (job #553079) | Cod sursa (job #2028637) | Cod sursa (job #789504) | Cod sursa (job #2842929)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, m, x, y, l, k, len;
int a[100][505][505], lg[505];
int main() {
fin >> n >> m;
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++){
fin >> a[0][i][j];
}
}
for (int p=1, lat=2;lat<=n;p++, lat*=2){
for (int i=1;i<=n-lat+1;i++){
for (int j=1;j<=n-lat+1;j++){
int i2 = i + (lat >> 1);
int j2 = j + (lat >> 1);
a[p][i][j] = max(max(a[p-1][i][j], a[p-1][i2][j]), max(a[p-1][i][j2], a[p-1][i2][j2]));
}
}
}
lg[1] = 0;
for (int i=2;i<=n;i++){
lg[i] = 1 + lg[i/2];
}
for (int i=1;i<=m;i++){
fin >> x >> y >> l;
k = lg[l];
len = (1 << k);
int x2 = x + l - len;
int y2 = y + l - len;
fout << max(max(a[k][x][y], a[k][x][y2]), max(a[k][x2][y], a[k][x2][y2])) << '\n';
}
return 0;
}