Cod sursa(job #3042200)

Utilizator radu._.21Radu Pelea radu._.21 Data 4 aprilie 2023 18:56:24
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>

using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n,q,r[10][501][501];
int E[501];
int main(){
    fin>>n>>q;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            fin>>r[0][i][j];
    E[1]=0;
    for(int i=2;i<=n;i++)
        E[i]=1+E[i/2];
    for(int p=1,lat=2;lat<=n;p++,lat*=2)
        for(int i=1;i<=n-lat+1;i++)
        for(int j=1;j<=n-lat+1;j++){
            int i2=i+(lat>>1);
            int j2=j+(lat>>1);
            r[p][i][j]=max(
                        max(r[p-1][i][j],r[p-1][i2][j2]),
                        max(r[p-1][i][j2],r[p-1][i2][j])
                        );
        }
    while(q--){
        int i,j,L;
        fin>>i>>j>>L;
        int k=E[L];
        int len=(1<<k);
        int i2=i+L-len;
        int j2=j+L-len;
        fout<<max(
                 max(r[k][i][j],r[k][i2][j2]),
                 max(r[k][i][j2],r[k][i2][j])
                 )<<'\n';
    }
    return 0;
}