Cod sursa(job #3161694)

Utilizator Cazacu2006RazvanRazvan Cazacu Cazacu2006Razvan Data 27 octombrie 2023 19:32:22
Problema Plantatie Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>

using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int r[20][1001][1001],n,m,x,y,z;
int main()
{
    fin>>n>>m;

    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;i++)
    {
        for(int j=1;j<=n;j++)
        {
            int l=i+(1<<(p-1));
            int c=j+(1<<(p-1));
            r[p][i][j]=r[p-1][i][j];
            r[p][i][j]=max(r[p][i][j],r[p-1][l][j]);
            r[p][i][j]=max(r[p][i][j],r[p-1][i][c]);
            r[p][i][j]=max(r[p][i][j],r[p-1][l][c]);

        }
    }
    }

    for(int i=1;i<=m;i++)
    {
        fin>>x>>y>>z;
        int p=0;
        for(p=0;(1<<p)<=z;p++);
        p--;
        int l=x+z;
        int c=y+z;
        int len=(1<<p);

        fout<<max(r[p][x][y],max(r[p][l-len][y],max(r[p][i][c-len],r[p][l-len][c-len])))<<"\n";
    }


    return 0;
}