Cod sursa(job #2837280)

Utilizator AdrianRosuRosu Adrian Andrei AdrianRosu Data 22 ianuarie 2022 01:08:49
Problema Plantatie Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>
#define DIM 502
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int i,j,i1,j2,m,n,l,len,k,x,p,st,dr;
int a[11][DIM][DIM], v[DIM];
int main(){
fin>>n>>m;
for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
             fin>>a[0][i][j];
        }
}
for(i=1,l=2;l<=n;i++,l*=2){
    for(j=1;j<=n-l+1;j++){
            for(p=1;p<=n-l+1;p++){
      i1=j+(l>>1);
      j2=p+(l>>1);
      a[i][j][p]=max(max(a[i-1][j][p],a[i-1][i1][p]), max(a[i-1][i][j2], a[i-1][i1][j2]));
    }
}
}
for(i=2;i<=n;i++){
    v[i]=v[i/2]+1;
}
for(i=1;i<=m;i++){
    fin>>st>>dr>>x;
    k=v[x];
    len=(1<<k);
    i1=st+x-len;
    j2=dr+x-len;
    fout<<max(max(a[k][st][dr], a[k][st][j2]), max(a[k][i1][dr], a[k][i1][j2]))<<"\n";
}
    return 0;
}