Pagini recente » Cod sursa (job #280157) | Cod sursa (job #1778375) | Cod sursa (job #2445342) | Cod sursa (job #229416) | Cod sursa (job #3297744)
#include <fstream>
#include <algorithm>
using namespace std;
const int maxn = 505;
int rmq[10][maxn][maxn], lg[maxn];
int main(){
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int n, qr;
cin >> n >> qr;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++) {
cin >> rmq[0][i][j];
}
for(int i=2; i<=n; i++)
lg[i] = lg[i/2] + 1;
for(int p=1; (1<<p)<=n; p++)
for(int i=1; i+(1<<(p-1))<=n; i++)
for(int j=1; j+(1<<(p-1))<=n; j++){
int x = i + (1 << (p-1));
int y = j + (1 << (p-1));
rmq[p][i][j]=max({rmq[p-1][i][j], rmq[p-1][x][j], rmq[p-1][i][y], rmq[p-1][x][y]});
// cout << rmq[p][i][j] << "\n";
}
for (int k = 0; k < qr; k++){
int x,y,lat;
cin >> x >> y >> lat;
int len = (1<<(lg[lat]));
int x2=x+lat-len, y2 = y+lat-len;
int res = max({
rmq[lg[len]][x][y],
rmq[lg[len]][x2][y],
rmq[lg[len]][x][y2],
rmq[lg[len]][x2][y2]
});
cout << res << "\n";
}
}