Cod sursa(job #2851101)

Utilizator nicuhasCemartan Nicolae nicuhas Data 18 februarie 2022 09:11:32
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
using namespace std;
int r[9][501][501],log2[501];
int max1(int a,int b,int c,int d){
    return max(max(a,b),max(c,d));
}
int main(){
    ifstream fin("plantatie.in");
    ofstream fout("plantatie.out");
    int n,m,i,j,lat,c,p,l;
    fin>>n>>m;
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            fin>>r[0][i][j];
        }
    }
    for(l=1;(1<<l)<=n;l++){
        for(i=(1<<l);i<=n;i++){
            for(j=(1<<l);j<=n;j++){
                lat=(1<<(l-1));
                r[l][i][j]=max1(r[l-1][i-lat][j-lat],r[l-1][i-lat][j],r[l-1][i][j-lat],r[l-1][i][j]);
            }
        }
    }
    for(i=2;i<=n;i++){
        log2[i]=1+log2[i/2];
    }
    for(i=1;i<=m;i++){
        fin>>l>>c>>lat;
        l+=lat-1;
        c+=lat-1;
        p=log2[lat];
        lat-=(1<<p);
        fout<<max1(r[p][l-lat][c-lat],r[p][l-lat][c],r[p][l][c-lat],r[p][l][c])<<"\n";
    }
    return 0;
}