Pagini recente » Monitorul de evaluare | Statistici Rares Dop (MrRares18) | Cod sursa (job #1258897) | Statistici Claudiu-George Unguru (Waizdor) | Cod sursa (job #2233730)
#include <bits/stdc++.h>
using namespace std;
const int N = 505, LG = 9;
int rm[LG][N][N], v[N];
int main() {
freopen("plantatie.in", "r", stdin);
freopen("plantatie.out", "w", stdout);
int n, m, x, y, w, j1, j2;
scanf("%d %d", &n, &m);
for (int i = 2; i <= n; i++) {
v[i] = v[i / 2] + 1; }
// v[1] = 1;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++){
scanf("%d", &rm[0][i][j]); }
for (int lg = 1; lg <= v[n]; lg++)
for (int i = 1; i + (1 << lg) - 1 <= n; i++)
for (int j = 1; j + (1 << lg) - 1 <= n; j++) {
j1 = max(rm[lg - 1][i][j], rm[lg - 1][i][j + (1 << (lg - 1))]);
j2 = max(rm[lg - 1][i + (1 << (lg - 1))][j], rm[lg - 1][i + (1 << (lg - 1))][j + (1 << (lg - 1))]);
rm[lg][i][j] = max(j1, j2); }
for (int i = 1; i <= m; i++) {
scanf(" %d %d %d ", &x, &y, &w);
j1 = max(rm[v[w]][x][y], rm[v[w]][x][y + w - (1 << v[w])]);
j2 = max(rm[v[w]][x + w - (1 << v[w])][y], rm[v[w]][x + w - (1 << v[w])][y + w - (1 << v[w])]);
printf("%d\n", max(j1, j2)); }
return 0; }