Cod sursa(job #2674945)

Utilizator Alex_AeleneiAlex Aelenei Ioan Alex_Aelenei Data 20 noiembrie 2020 20:16:55
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <cmath>
#include <fstream>
#include <iostream>

using namespace std;

const int NMAX = 5e2;
int a[(int)log2(NMAX) + 5][NMAX + 5][NMAX + 5];

int main()
{
    ifstream in("plantatie.in");
    ofstream out("plantatie.out");

    int n, m, x, y, z, i, j, k, dist;
    in >> n >> m;

    for(i = 1; i <= n; ++ i)
        for(j = 1; j <= n; ++ j)
            in >> a[0][i][j];

    for(i = 1; i <= (int)log2(n); ++ i)
        for(j = 1; j <= n - (1 << i) + 1; ++ j)
            for(k = 1; k <= n - (1 << i) + 1; ++ k)
                a[i][j][k] = max(a[i - 1][j][k], max(a[i - 1][j + (1 << (i - 1))][k], max(a[i - 1][j][k + (1 << (i - 1))], a[i - 1][j + (1 << (i - 1))][k + (1 << (i - 1))])));

    for(i = 1; i <= m; ++ i)
    {
        in >> x >> y >> z;
        dist = (int)log2(z);
        out << max(a[dist][x][y], max(a[dist][x + z - (1 << dist)][y], max(a[dist][x][y + z - (1 << dist)], a[dist][x + z - (1 << dist)][y + z - (1 << dist)]))) << '\n';
    }

    return 0;
}