Pagini recente » Cod sursa (job #550660) | Cod sursa (job #570349) | Cod sursa (job #1089961) | Cod sursa (job #2363756) | Cod sursa (job #2593243)
#include <iostream>
#include <fstream>
std::ifstream in("plantatie.in");
std::ofstream out("plantatie.out");
const int NMAX=501;
const int LMAX=10;
int log2[NMAX];
int rmq[LMAX][NMAX][NMAX];
int mat[NMAX][NMAX];
int main(){
int n,m;
in>>n>>m;
log2[1]=0;
for(int i=2;i<NMAX;i++)
log2[i]=log2[i/2]+1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
in>>mat[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
rmq[0][i][j]=mat[i][j];
for(int k=1;k<=log2[n];k++){
for(int i=1;i<=n-(1<<(k-1))+1;i++)
for(int j=1;j<=n-(1<<(k-1))+1;j++){
rmq[k][i][j]=std::max(rmq[k-1][i][j],rmq[k-1][i+(1<<(k-1))][j]);
rmq[k][i][j]=std::max(rmq[k][i][j],std::max(rmq[k-1][i][j+(1<<(k-1))],rmq[k-1][i+(1<<(k-1))][j+(1<<(k-1))]));
}
}
for(int i=1;i<=m;i++){
int x,y,k;
in>>x>>y>>k;
int l=log2[k];
std::cout<<l<<'\n';
int rez=std::max(std::max(rmq[l][x][y],rmq[l][x+k-(1<<l)][y])
,std::max(rmq[l][x][y+k-(1<<l)],rmq[l][x+k-(1<<l)][y+k-(1<<l)]));
out<<rez<<'\n';
}
return 0;
}