Cod sursa(job #3124209)

Utilizator RK13Barbu Eduard RK13 Data 27 aprilie 2023 11:29:19
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

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

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

int main()
{int i,k=0,x,p=1,j,y,l,sol;
    f>>n>>m;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            f>>rmq[0][i][j];
    while (p<=n)
    {
        p*=2;
        k++;
    }
    k--;
    p=1;
    for (x=1;x<=k;x++)
    {
        for (i=1;i<=n-p*2+1;i++)
            for (j=1;j<=n-p*2+1;j++)
                rmq[x][i][j]=max(rmq[x-1][i][j],max(rmq[x-1][i+p][j+p],max(rmq[x-1][i+p][j],rmq[x-1][i][j+p])));
        p*=2;
    }
    for (i=1;i<=m;i++)
    {
        f>>x>>y>>l;
        p=1;
        k=0;
        while(p<=l)
        {
            p*=2;
            k++;
        }
        k--;
        p/=2;
        sol=max(rmq[k][x][y],max(rmq[k][x+l-p][y+l-p],max(rmq[k][x+l-p][y],rmq[k][x][y+l-p])));
        g<<sol<<'\n';
    }
}