Pagini recente » Cod sursa (job #850797) | Cod sursa (job #1127022) | Rating lavinia30 (lavinia30) | Cod sursa (job #1228276) | Cod sursa (job #1478662)
#include<bits/stdc++.h>
using namespace std;
int i,j,k,n,q,Rmq[505][505][15],lg[505],rs,aux,gmb;
int Max(int a,int b,int c,int d) { return max(max(a,b),max(c,d)); }
void RMQ() {
for(i=2;i<=500;++i) lg[i]=lg[i/2]+1;
for(k=1;k<=lg[n];++k)
for(i=1;i+(1<<(k-1))<=n;++i)
for(j=1;j+(1<<(k-1))<=n;++j)
{
aux=(1<<(k-1));
Rmq[i][j][k]=Max(Rmq[i][j][k-1],Rmq[i+aux][j+aux][k-1],Rmq[i+aux][j][k-1],Rmq[i][j+aux][k-1]);
}
}
int main()
{
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
cin>>n>>q;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
cin>>Rmq[i][j][0];
for(RMQ();q;--q)
{
cin>>i>>j>>k; aux=lg[k]; gmb=(1<<aux);
cout<<Max(Rmq[i][j][aux],Rmq[i+k-gmb][j+k-gmb][aux],Rmq[i+k-gmb][j][aux],Rmq[i][j+k-gmb][aux])<<'\n';
}
return 0;
}