Cod sursa(job #3366969)

Utilizator RuxandraPro12_Metehau Ruxandra Maria RuxandraPro12_ Data 5 octombrie 2026 15:28:48
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>
#pragma GCC optimize("O3")

using namespace std;

ifstream fin("plantatie.in");
ofstream fout("plantatie.out");

const int NMAX = 5e2, LGMAX = 10;

int n, m, lg2[NMAX + 5], rmq[LGMAX][NMAX + 5][NMAX + 5];

int main() {
    fin >> n >> m;
    for (int i = 2; i <= n; i++)
        lg2[i] = lg2[i / 2] + 1;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++)
            fin >> rmq[0][i][j];
    }
    for (int e = 1; (1 << e) <= n; e++) {
        for (int i = 1; i + (1 << e) - 1 <= n; i++) {
            for (int j = 1; j + (1 << e) - 1 <= n; j++)
                rmq[e][i][j] = max({rmq[e - 1][i][j], rmq[e - 1][i + (1 << (e - 1))][j], rmq[e - 1][i][j + (1<<(e - 1))], rmq[e - 1][i + (1 << (e - 1))][j + (1 << (e - 1))]});
        }
    }
    while (m--) {
        int l, c, k;
        fin >> l >> c >> k;
        int p = lg2[k];
        fout << max({rmq[p][l][c],rmq[p][l + k - (1 << p)][c], rmq[p][l][c + k - (1 << p)], rmq[p][l + k - (1 << p)][c + k - (1 << p)]}) << "\n";
    }
    return 0;
}