Cod sursa(job #2812148)

Utilizator cdenisCovei Denis cdenis Data 4 decembrie 2021 01:00:56
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("plantatie.in");
ofstream fout("plantatie.out");

const int MAX=505;
const int LOG=10;
int n,m,v[LOG][MAX][MAX],log2[MAX];

int main()
{
    fin >> n >> m;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
            fin >> v[0][i][j];
    log2[1]=0;
    for(int i=2;i<=n;i++)
        log2[i]=log2[i>>1]+1;
    for(int k=1;(1<<k)<=n;k++)
    {
        int p=1<<(k-1);
        int sf=n-(1<<k)+1;
        for(int i=1;i<=sf;i++)
            for(int j=1;j<=sf;j++)
                v[k][i][j]=max(max(v[k-1][i][j],v[k-1][i][j+p]),max(v[k-1][i+p][j],v[k-1][i+p][j+p]));
    }
    for(;m;--m)
    {
        int i,j,k,l,p;
        fin >> i >> j >> k;
        l=log2[k];
        p=1<<l;
        fout << max(max(v[l][i][j],v[l][i][j+k-p]),max(v[l][i+k-p][j],v[l][i+k-p][j+k-p])) << '\n';
    }
    return 0;
}