Cod sursa(job #3366970)

Utilizator Tudor......Marin Diu Tudor Tudor...... Data 5 octombrie 2026 15:35:28
Problema Plantatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
#define NM 501
int v[NM][NM], rmq[10][NM][NM], l2[NM];
int main() {
    int n, m, i, j, k, p, e, nr;
    in >> n >> m;
    for (i = 1; i <= n; i++) {
        for (j = 1; j <= n; j++) {
            in >> v[i][j];
            rmq[0][i][j] = v[i][j];
        }
    }
    for (i = 1; (1 << i) <= n;i++) {
        for (j = 1; j <= n; j++) {
            for (k = 1; k <= n; k++) {
                p = 1 << (i - 1);
                rmq[i][j][k] = max(rmq[i - 1][j - p][k - p], max(rmq[i - 1][j - p][k], max(rmq[i - 1][j][k - p], rmq[i - 1][j][k])));
            }
        }
    }
    for (i = 1;i <= n;i++) {
        l2[i] = l2[i >> 1] + 1;
    }
    while (m--) {
        in >> i >> j >> k;
        i += k - 1;
        j += k - 1;
        e = l2[k];
        p = 1 << e;
        nr = k - p;
        out << max(rmq[e][i + nr][j + nr], max(rmq[e][i + nr][j], max(rmq[e][i][j + nr], rmq[e][i][j]))) << endl;
    }
    return 0;
}