Pagini recente » Cod sursa (job #2273616) | Cod sursa (job #1499906) | Cod sursa (job #2965370) | Cod sursa (job #1323068) | Cod sursa (job #2851115)
#include <iostream>
#include <cmath>
using namespace std;
int rmq[501][501][11],lg[501];
ifstream cin("plantatie.in);
ofstream cout("plantatie.out");
int main()
{
int n,q;
cin>>n>>q;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>rmq[j][i][0];
}
}
for(int k=1;(1<<k)<=n;k++)
{
int l=(1<<(k-1));
for(int i=1;i+l<=n;i++)
{
for(int j=1;j+l<=n;j++)
{
int l2=(1<<(k-1));
rmq[j][i][k]=max(max(rmq[j][i][k-1],rmq[j+l2][i][k-1]) , max(rmq[j][i+l2][k-1],rmq[j+l2][i+l2][k-1]));
}
}
}
for(int i=2;i<=n;i++)
{
lg[i]=lg[(i>>1)]+1;
}
while(q--)
{
int x,y,k;
cin>>y>>x>>k;
int l=lg[k];
int xx=x+k-(1<<l);
int yy=y+k-(1<<l);
cout<<max( max(rmq[x][y][l], rmq[x][yy][l]) , max(rmq[xx][y][l],rmq[xx][yy][l]))<<'\n';
}
return 0;
}