Cod sursa(job #3134272)

Utilizator darius1843Darius Suditu darius1843 Data 28 mai 2023 20:30:06
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int matrix[10][505][505];
int E[505];
int main()
{
    int n, m, l1, l2, c1, c2, l, niv, lng, e;
    in >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            in >> matrix[0][i][j];
        }
    }
    for (int p = 1; l <= n; p++)
    {
        for (int l1 = 1; l1 <= n - l + 1; l1++)
        {
            for (int c1 = 1; c1 <= n - l + 1; c1++)
            {
                l = (1 << p);
                l2 = l1 + (l >> 1);
                c2 = c1 + (l >> 1);
                matrix[p][l1][c1] = max(max(matrix[p - 1][l1][c1], matrix[p - 1][l2][c1]), max(matrix[p - 1][l1][c2], matrix[p - 1][l2][c2]));
            }
        }
    }
    E[1] = 0;
    for (int i = 2; i <= n; i++)
        E[i] = 1 + E[i / 2];
    for (int i = 1; i <= m; i++)
    {
        in >> l1 >> c1 >> lng;
        e = E[lng];
        niv = (1 << e);
        l2 = l1 + lng - niv;
        c2 = c1 + lng - niv;
        out << max(max(matrix[e][l1][c1], matrix[e][l1][c2]), max(matrix[e][l2][c1], matrix[e][l2][c2])) << "\n";
    }
    return 0;
}