Pagini recente » Cod sursa (job #382419) | Cod sursa (job #1377190) | Cod sursa (job #1878807) | Cod sursa (job #2751054) | Cod sursa (job #2583148)
//#include <iostream>
#include <fstream>
using namespace std;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int v[505][505],rmq[505][505][12],put[20],lg[1500];
int q(int i,int j,int k){
int e=lg[k],ii=i+k-put[e],jj=j+k-put[e];
return max(rmq[i][j][e],max(rmq[ii][j][e],max(rmq[i][jj][e],rmq[ii][jj][e])));
}
int main()
{
int n,t;
cin>>n>>t;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>v[i][j];
rmq[i][j][0]=v[i][j];
}
}
put[0]=1;
for(int i=1;i<=10;i++){
put[i]=put[i-1]*2;
lg[put[i]]++;
}
for(int i=1;i<=1000;i++){
lg[i]+=lg[i-1];
}
for(int e=1;e<=9;e++){
for(int i=1;i<=n;i++){
if(i+put[e]-1>n)
break;
for(int j=1;j<=n;j++){
if(j+put[e]-1>n)
break;
rmq[i][j][e]=max(rmq[i][j][e-1],max(rmq[i+put[e-1]][j][e-1],max(rmq[i][j+put[e-1]][e-1],rmq[i+put[e-1]][j+put[e-1]][e-1])));
}
}
}
while(t--){
int i,j,k;
cin>>i>>j>>k;
cout<<q(i,j,k)<<"\n";
}
return 0;
}