Cod sursa(job #2683868)

Utilizator rareshinnhoMiroiu Rares rareshinnho Data 12 decembrie 2020 10:45:41
Problema Plantatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

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

int maxim(int x,int y,int z,int v)
{
    return max(max(x,y),max(z,v));
}

int d[500][505][10],n,m,p,k,x,y,l;

int main()
{
    f>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)f>>d[i][j][0];

    for(int k=1;k<=9;k++)
    {
        p=(1<<k);
        for(int i=1;i<=n-p+1;i++)
        {
            for(int j=1;j<=n-p+1;j++)
                d[i][j][k]=maxim(d[i][j][k-1],d[i+p/2][j][k-1],d[i][j+p/2][k-1],d[i+p/2][j+p/2][k-1]);
        }
    }
    for(int i=1;i<=m;i++)
    {
        f>>x>>y>>l;
        p=log2(l);
        ans=maxim(d[x][y][p],d[x+l-(1<<p)][y][p],d[x][y+l-(1<<p)][p],d[x+l-(1<<p)][y+l-(1<<p)][p]);
        g<<ans<<'\n';
    }

    return 0;
}