Cod sursa(job #3161717)

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

using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int r[11][501][501],n,m,x,y,z,e[1001];
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++){
     int nx=n-(1<<p)+1;
    for(int i=1;i<=nx;i++)
    {
        for(int j=1;j<=nx;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]);

        }
    }
    }
    e[1]=0;

 for(int i=2;i<=n;i++){
    e[i]=e[i/2]+1;
 }

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


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


    return 0;
}