Pagini recente » Cod sursa (job #944392) | Cod sursa (job #3146669) | Cod sursa (job #2242418) | Cod sursa (job #253398) | Cod sursa (job #2901885)
#include <fstream>
using namespace std;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int lg[501],rmq[9][501][501];
int main() {
int N,Q;
cin>>N>>Q;
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
{
cin>>rmq[0][i][j];
}
lg[1]=0;
for(int i=2;i<=N;i++)
lg[i]=lg[i/2]+1;
for(int baza=1;baza<=lg[N];baza++)
for(int i=1;i<=N-(1<<baza)+1;i++)
for(int j=1;j<=N-(1<<baza)+1;j++)
rmq[baza][i][j]=max(max(rmq[baza-1][i][j],rmq[baza-1][i+(1<<(baza-1))][j]),max(rmq[baza-1][i][j+(1<<(baza-1))],rmq[baza-1][i+(1<<(baza-1))][j+(1<<(baza-1))])) ;
int i,j,k,p;
for(int c=1;c<=Q;c++)
{
cin>>i>>j>>k;
if(k==(1<<lg[k]))
cout<<rmq[lg[k]][i][j]<<"\n";
else{
p=lg[k];
cout<<max(max(rmq[p][i][j],rmq[p][i][j+k-(1<<p)]),max(rmq[p][i+k-(1<<p)][j+k-(1<<p)],rmq[p][i+k-(1<<p)][j]))<<"\n";
}
}
}