Pagini recente » Cod sursa (job #822519) | Cod sursa (job #2693747) | Cod sursa (job #2076122) | Cod sursa (job #1062012) | Cod sursa (job #2606674)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
const int N=501,L=10;
int rmq[L][N][N];
int log2[N];
int n,m,x,y,lat,ans;
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
fin>>x;
rmq[0][i][j]=x;
}
}
log2[1]=0;
for(int i=2;i<=n;i++)
{
log2[i]=1+log2[i/2];
}
for(int k=1;k<=log2[n];k++)
{
for(int i=1<<k;i<=n;i++)
{
for(int j=1<<k;j<=n;j++)
{
int ii=i-(1<<(k-1));
int jj=j-(1<<(k-1));
int a=max(rmq[k-1][ii][jj],rmq[k-1][i][j]);
int b=max(rmq[k-1][ii][j],rmq[k-1][i][jj]);
rmq[k][i][j]=max(a,b);
}
}
}
for(int i=1;i<=m;i++)
{
fin>>x>>y>>lat;
int loglat=log2[lat];
int lat2=1<<loglat;
int a=max(rmq[loglat][x+lat2-1][y+lat2-1],rmq[loglat][x+lat2-1][y+lat-1]);
int b=max(rmq[loglat][x+lat-1][y+lat2-1],rmq[loglat][x+lat-1][y+lat-1]);
ans=max(a,b);
fout<<ans<<'\n';
}
return 0;
}