Pagini recente » Cod sursa (job #1473216) | Cod sursa (job #3219771)
using namespace std;
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, Q;
int rmq[10][501][501];
int i1, j1, i2, j2;
int L;
int exp[501];
int main() {
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, lat = 2; lat <= n; p++, lat*= 2) {
for (i1 = 1; i1<=n-lat+1; i1++) {
for (j1 = 1; j1<=n-lat+1; j1++) {
i2 = i1 + lat/2;
j2 = j1 + lat/2;
rmq[p][i1][j1] = max(max(rmq[p-1][i1][j1], rmq[p-1][i2][j1]),
max(rmq[p-1][i1][j2], rmq[p-1][i2][j2]));
}
}
}
exp[1] = 0;
for (int i = 2; i<=n; i++) {
exp[i] = 1 + exp[i/2];
}
while (Q--) {
fin >> i1 >> j1 >> L;
int e = exp[L];
int p = (1 << e);
i2 = i1 + L - p;
j2 = j1 + L - p;
fout << max(max(rmq[e][i1][j1], rmq[e][i1][j2]),
max(rmq[e][i2][j1], rmq[e][i2][j2])) << '\n';
}
return 0;
}