Cod sursa(job #3159804)

Utilizator Robert_MitriRobert Mitri Robert_Mitri Data 22 octombrie 2023 10:53:10
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");

int n,q;

int r[10][505][505];

int e[505];

int mx(int a,int b,int c,int d)
{
    return max(max(a,b),max(c,d));
}

void prec()
{
    for(int i=2 ; i<=n;i++)
        e[i]=e[i/2]+1;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            fin>>r[0][i][j];
    for(int p=1;(1<<p) <= n; p++)
        for(int i=1;i<=n - (1<<p)+1;i++)
            for(int j=1;j<=n - (1<<p)+1;j++)
    {
        int i2 = i + (1<<(p-1));
        int j2 = j + (1<<(p-1));
        r[p][i][j] = mx(
                        r[p-1][i][j],
                        r[p-1][i2][j],
                        r[p-1][i][j2],
                        r[p-1][i2][j2]
                        );
    }

}



int main()
{
    fin>>n>>q;
    prec();
    for(int i=1;i<=q;i++)
    {
        int x,y,l;
        fin>>x>>y>>l;
        int lg = e[l];
        int x2 = x + l - (1<<lg);
        int y2 = y + l - (1<<lg);

        int sol = mx(r[lg][x][y],r[lg][x2][y],r[lg][x][y2],r[lg][x2][y2]);
        fout<<sol<<'\n';
    }
}