Pagini recente » Cod sursa (job #614509) | Cod sursa (job #1789402) | Cod sursa (job #1127393) | Cod sursa (job #3261135) | Cod sursa (job #2898160)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
const int NMAX = 504;
const int MAXN=9;
int rmq[MAXN][NMAX][NMAX],prec[NMAX];
int main()
{
int n,q,i,j,k,a,b,l,l2;
fin>>n>>q;
for(i=1;i<=n;i++)
for (j=1;j<=n;j++)
fin>>rmq[0][i][j];
for (i=2;i<=n;i++)
prec[i]=1+prec[(i>>1)];
for (k=1;k<=prec[n];k++)
{
int lat=(1<<(k-1));
for(i=lat;i<=n;i++)
for (j=lat;j<=n;j++)
rmq[k][i][j]=max(max(rmq[k-1][i][j],rmq[k-1][i][j-lat]),max(rmq[k-1][i-lat][j-lat],rmq[k-1][i-lat][j]));
}
while(q--)
{
fin>>a>>b>>l;
a+=l-1;
b+=l-1;
l2=(1<<prec[l]);
fout<<max(max(rmq[prec[l]][a-l+l2][b-l+l2],rmq[prec[l]][a][b-l+l2]),max(rmq[prec[l]][a][b],rmq[prec[l]][a-l+l2][b]))<<"\n";
}
return 0;
}