Pagini recente » Cod sursa (job #1920631) | Cod sursa (job #2278274)
#include <iostream>
#include <cstdio>
using namespace std;
const int N=500+5;
const int LOG=10;
int n,t;
int rmq[N][N][LOG];
int lg2[N];
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d %d",&n,&t);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&rmq[i][j][0]);
}
}
for(register int i=2;i<N;i++)
{
lg2[i]=lg2[i/2]+1;
}
for(register int lg=1;(1<<lg)<=n;lg++)
{
for(register int i=1;i+(1<<lg)-1<=n;i++)
{
for(register int j=1;j+(1<<lg)-1<=n;j++)
{
rmq[i][j][lg]=max(max(rmq[i][j][lg-1],rmq[i][j+(1<<(lg-1))][lg-1]),max(rmq[i+(1<<(lg-1))][j][lg-1],rmq[i+(1<<(lg-1))][j+(1<<(lg-1))][lg-1]));
}
}
}
for(int tc=1;tc<=t;tc++)
{
int r,c,len;
cin>>r>>c>>len;
int re=r+len-1;
int ce=c+len-1;
int lg=lg2[len];
int ans=0;
ans=max(max(rmq[r][c][lg],rmq[r][ce-(1<<lg)+1][lg]),max(rmq[re-(1<<lg)+1][c][lg],rmq[re-(1<<lg)+1][ce-(1<<lg)+1][lg]));
cout<<ans<<"\n";
}
return 0;
}