Cod sursa(job #2791081)

Utilizator mihnea03Ciocioiu Mihnea mihnea03 Data 30 octombrie 2021 01:46:01
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <fstream>
#include <climits>
#define dim 510
using namespace std;
int a[20][dim][dim];
int log[dim];
int i,j,k,n,m,l,c,len;
int m1,m2,m3,m4;

int main() {
    ifstream fin("plantatie.in");
    ofstream fout("plantatie.out");
    fin>>n>>m;
    for (i=1;i<=n;++i) {
        for (j=1;j<=n;++j) {
            fin>>a[0][i][j];
        }
    }
    for (i=2;i<=n;++i) {
        log[i]=log[i/2]+1;
    }
    for (k=1;k<=log[n];++k) {
        for (i=1;i<=n-(1<<k)+1;++i) {
            for (j=1;j<=n-(1<<k)+1;++j) {
                m1=a[k-1][i][j];
                m2=a[k-1][i+(1<<k-1)][j];
                m3=a[k-1][i][j+(1<<k-1)];
                m4=a[k-1][i+(1<<k-1)][j+(1<<k-1)];
                a[k][i][j]=max(max(m1,m2),max(m3,m4));
            }
        }
    }
    for(;m--;) {
        fin>>l>>c>>len;
        k=log[len];
        m1=a[k][l][c];
        m2=a[k][l+len-(1<<k)][c];
        m3=a[k][l][c+len-(1<<k)];
        m4=a[k][l+len-(1<<k)][c+len-(1<<k)];
        fout<<max(max(m1,m2),max(m3,m4))<<"\n";
    }
  /**  for (k=0;k<=log[n];k++) {
        for (i=1;i<=n;i++) {
            for (j=1;j<=n;j++) {
                fout<<a[k][i][j]<<" ";
            }
            fout<<"\n";
        }
        fout<<"\n\n\n";
    }  **/
    return 0;
}