Pagini recente » Cod sursa (job #2695146) | Cod sursa (job #313262) | Cod sursa (job #2429483) | Cod sursa (job #2757881) | Cod sursa (job #2442140)
#include <fstream>
//#include <iostream>
using namespace std;
ifstream fin ("plantatie.in");
ofstream fout ("plantatie.out");
long long n, m, k, a[505][505];
int Max[505][505][10], ls, lj, cs, cj;
int main() {
fin >> n >> m;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j) {
fin >> a[i][j];
Max[i][j][1] = a[i][j];
}
for (int l = 2, k = 1; k <= n; ++l, k <<= 1) {
for (int J = 1; J <= n; ++J)
Max[i][J][l] = max(Max[i][J][l - 1], Max[i][J + k][l - 1]);
}
}
int V[30];
V[1] = 1;
for (int i = 2; i <= 28; ++i)
V[i] = V[i - 1] * 2;
for (int i = 1; i <= m; ++i) {
fin >> ls >> cs >> k;
lj = ls + k - 1;
cj = cs + k - 1;
int LOG = 0, ans = 0;
while (k)
++LOG, k >>= 1;
for (int j = ls; j <= lj; ++j)
ans = max(ans, max(Max[j][cs][LOG], Max[j][cj - V[LOG] + 1][LOG]));
fout << ans << '\n';
}
return 0;
}