Cod sursa(job #2789798)

Utilizator KPP17Popescu Paul KPP17 Data 27 octombrie 2021 23:29:08
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#define mF "plantatie"
std::ifstream in(mF ".in");
std::ofstream out(mF ".out");
constexpr int L(int e) {return e? L(e >> 1) + 1: 0;}
constexpr int N = 500; int V[L(N)][N][N];
#include <algorithm>
#define A i-1
#define B (1<<A)
#define C c - (1<<l)
int main()
{
    int n, m; in >> n >> m; for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) in >> (*V)[i][j];

    for (int i = 1; i < L(n); i++)
    for (int j = 0; j + (1<<i) <= n; j++)
    for (int k = 0; k + (1<<i) <= n; k++)
    V[i][j][k] = std::max({
    V[A][j][k],     V[A][j][k + B],
    V[A][j + B][k], V[A][j + B][k + B]});

    while (m--) {int a, b, c, l; in >> a >> b >> c; l = L(c)-1, --a, b--;
    out << std::max({
    V[l][a][b],     V[l][a][b + C],
    V[l][a + C][b], V[l][a + C][b + C]}) << '\n';}

}