Pagini recente » Cod sursa (job #866938) | Cod sursa (job #2632099) | Cod sursa (job #3030385) | Atasamentele paginii Clasament concurs. | Cod sursa (job #2134993)
/*
#include <bits/stdc++.h>
using namespace std;
int main() {
freopen("carici.in", "r", stdin);
//freopen(".in", "r", stdin);
//freopen(".out", "w", stdout);
return 0;
}
*/
#include <bits/stdc++.h>
using namespace std;
#define NMAX 501
#define pow2(x) (1 << (x))
int n, m;
int lg2[NMAX];
int D[10][NMAX][NMAX];
int main() {
freopen("carici.in", "r", stdin);
freopen("plantatie.in", "r", stdin);
freopen("plantatie.out", "w", stdout);
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> D[0][i][j];
}
}
lg2[0] = 1;
for (int i = 2; i <= n; i++) {
lg2[i] = lg2[i / 2] + 1;
}
for (int k = 1; k <= lg2[n]; k++) {
for (int i = 1; i <= n - pow2(k - 1); i++) {
for (int j = 1; j <= n - pow2(k - 1); j++) {
D[k][i][j] = max(
max(D[k - 1][i][j], D[k - 1][i][j + pow2(k - 1)]),
max(D[k - 1][i + pow2(k - 1)][j], D[k -1][i + pow2(k - 1)][j + pow2(k - 1)])
);
}
}
}
while (m--) {
int i, j, k;
scanf("%d%d%d", &i, &j, &k);
int p = lg2[k];
int sol = max(
max(D[p][i][j], D[p][i][j + k - pow2(p)]),
max(D[p][i + k - pow2(p)][j], D[p][i + k - pow2(p)][j + k - pow2(p)])
);
cout << sol << "\n";
}
return 0;
}