Pagini recente » Cod sursa (job #1489131) | Cod sursa (job #1617152) | Cod sursa (job #154941) | Cod sursa (job #1751298) | Cod sursa (job #2616106)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int logg[505],rmq[505][505][10];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>rmq[i][j][0];
logg[1]=0;
for(int i=2;i<=n;i++)
logg[i]=1+logg[i/2];
for(int l=1;l<=logg[n];l++)
{
int k=(1<<(l-1));
for(int i=(1<<l);i<=n;i++)
for(int j=(1<<l);j<=n;j++)
rmq[i][j][l]=max({rmq[i][j][l-1],rmq[i-k][j][l-1],rmq[i][j-k][l-1],rmq[i-k][j-k][l-1]});
}
while(m--)
{
int l,p,i,j,k;
cin>>i>>j>>k;
i+=k-1;
j+=k-1;
l=logg[k];
p=(1<<l);
cout<<max({rmq[i][j][l],rmq[i-k+p][j][l],rmq[i][j-k+p][l],rmq[i-k+p][j-k+p][l]})<<"\n";
}
return 0;
}