Pagini recente » Cod sursa (job #835827) | Cod sursa (job #107108) | Cod sursa (job #2622207) | Cod sursa (job #695803) | Cod sursa (job #614007)
Cod sursa(job #614007)
#include <cstdio>
#include <fstream>
#include <algorithm>
using namespace std;
#define N 512
int lg[N],rmq[10][N][N],n,q,m[N][N];
ifstream in ("plantatie.in");
void read ()
{
in>>n>>q;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
in>>rmq[0][i][j];
}
void dinam ()
{
for(int i=2;i<=n;++i)
lg[i]=lg[i>>1]+1;
++n;
for(int k=1;(1<<k)<=n;++k){
int ll=(1<<k),l;
for(int i=1;i+ll<=n;++i)
for(int j=1;j+ll<=n;++j){
l=1<<(k-1);
rmq[k][i][j]=max(max(rmq[k-1][i][j],rmq[k-1][i+l][j]),max(rmq[k-1][i][j+l],rmq[k-1][i+l][j+l]));
}
}
}
void solve ()
{
freopen ("plantatie.out","w",stdout);
for(int i,j,k,l;q;--q){
in>>i>>j>>k;
l=lg[k];
printf("%d\n",max(max(rmq[l][i][j],rmq[l][i+k-(1<<l)][j]),max(rmq[l][i][j+k-(1<<l)],rmq[l][i+k-(1<<l)][j+k-(1<<l)])));
}
}
int main ()
{
read ();
dinam ();
solve ();
return 0;}