Cod sursa(job #2392496)

Utilizator KemyKoTeo Virghi KemyKo Data 30 martie 2019 09:11:42
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

ifstream f("plantatie.in");
ofstream g("plantatie.out");

int n, m;
int M[501][501][10];

int main()
{
    int i, j, k, l;

    f >> n >> m;
    for(i=1; i<=n; ++i)
        for(j=1;j<=n;++j)
            f >> M[i][j][0];

    for(k=1; (1<<k)<=n; ++k)
        for(i=1; i + (1<<(k - 1))<=n; ++i)
            for(j=1; j + (1<<(k - 1))<=n; ++j){
                int x = i + (1<<(k - 1)),
                    y = j + (1<<(k - 1)),
                    z = k - 1;

                M[i][j][k] = max(
                    max(M[i][j][z], M[i][y][z]),
                    max(M[x][j][z], M[x][y][z])
                );
            }

    for(k=1; k<=m; ++k){
        f >> i >> j >> l;
        int z = log2(l),
            x = i + l - (1<<z),
            y = j + l - (1<<z);

        g << max(
            max(M[i][j][z], M[i][y][z]),
            max(M[x][j][z], M[x][y][z])
        ) << '\n';
    }

    return 0;
}