Cod sursa(job #2167729)

Utilizator KemyKoTeo Virghi KemyKo Data 13 martie 2018 23:08:31
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 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);
        int 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;
}