Pagini recente » Cod sursa (job #2833746) | Cod sursa (job #1774219) | Cod sursa (job #369328) | Cod sursa (job #1032503) | Cod sursa (job #3149314)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int mat[501][501];
int lg[501];
int p2[9];
int rmq[501][501][9];
int main(){
int n, m;
fin >> n >> m;
for (int i = 2; i <= n; i++){
lg[i] = lg[i / 2] + 1;
}
p2[0] = 1;
for (int i = 1; i <= 8; i++){
p2[i] = p2[i - 1] * 2;
}
for (int i = 1; i <= n; i++){
for (int j = 1; j <= n; j++){
fin >> mat[i][j];
rmq[i][j][0] = mat[i][j];
}
}
for (int k = 1; k <= 8; k++){
for (int i = 1; i + p2[k] - 1 <= n; i++){
for (int j = 1; j + p2[k] - 1 <= n; j++){
int nrp2 = p2[k - 1];
int t1 = rmq[i][j][k-1];
int t2 = rmq[i + nrp2][j][k - 1];
int t3 = rmq[i][j + nrp2][k - 1];
int t4 = rmq[i + nrp2][j + nrp2][k - 1];
rmq[i][j][k] = max(max(t1, t2), max(t3, t4));
}
}
}
for (int i = 1; i <= m; i++){
int x, y, len;
fin >> x >> y >> len;
int log = lg[len];
int nrp2 = p2[log];
int t1 = rmq[x][y][log];
int t2 = rmq[x][y + len - nrp2][log];
int t3 = rmq[x + len - nrp2][y][log];
int t4 = rmq[x + len - nrp2][y + len - nrp2][log];
fout << max(max(t1, t2), max(t3, t4)) << '\n';
}
return 0;
}