Pagini recente » Cod sursa (job #1009432) | Cod sursa (job #900317) | Cod sursa (job #1985425) | Cod sursa (job #9480) | Cod sursa (job #2402544)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("plantatie.in");
ofstream fout ("plantatie.out");
const int NMAX=505;
int n,m,q,x,y,k,v[NMAX*NMAX+5];
int RMQ[NMAX*NMAX+5][50];
void read()
{
fin>>n>>m;
for(int i=1;i<=n*n;i++) fin>>v[i];
}
void RMQConstruct()
{
for(int i=1;i<=n*n;i++) RMQ[i][0]=i;
for(int j=1;(1<<j)<=n*n;j++)
for(int i=1;(1<<j)+i-1<=n*n;i++)
{
if(v[RMQ[i][j-1]] > v[RMQ[i+(1<<(j-1))][j-1]]) RMQ[i][j]=RMQ[i][j-1];
else RMQ[i][j]=RMQ[i+(1<<(j-1))][j-1];
}
}
void ans()
{
int maxim=INT_MIN;
int L=k;
int K=log2(L);
int low=n*(x-1)+y;
int high=low+k-1;
for(int i=1;i<=k;i++)
{
//fout<<low<<" "<<high<<endl;
maxim=max(maxim,max(v[RMQ[low][K]],v[RMQ[low+L-(1<<K)][K]]));
low+=n;
high=low+k-1;
}
fout<<maxim<<'\n';
//fout<<endl<<endl;
}
int main()
{
read();
RMQConstruct();
while(m--)
{
fin>>x>>y>>k;
ans();
}
return 0;
}