Pagini recente » Cod sursa (job #2484261) | Cod sursa (job #2669589) | Cod sursa (job #726430) | Cod sursa (job #2069463) | Cod sursa (job #925925)
Cod sursa(job #925925)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int rmq[501][501][10];
int lg[501],n,m,x,y;
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
fin>>rmq[i][j][0];
if(i>1)
lg[i] = 1+lg[i>>1];
}
for(int k = 1; (1<<k)<=n;k++)
for(int i=1;i+(1<<(k-1))-1<=n;i++)
for(int j=1;j+(1<<(k-1))-1<=n;j++)
rmq[i][j][k] = max(rmq[i][j][k-1],
max(rmq[i+(1<<(k-1))][j][k-1],
max(rmq[i][j+(1<<(k-1))][k-1],
rmq[i+(1<<(k-1))][j+(1<<(k-1))][k-1])));
for(int q=1;q<=m;q++)
{
int k,l;
fin>>x>>y>>k;
l = lg[k];
fout<<max( rmq[x][y][l],
max( rmq[x][y + k - (1<<l)][l] ,
max( rmq[x + k - (1<<l)][y][l],
rmq[x + k - (1<<l)][y + k - (1<<l)][l] )))<<'\n';
}
fin.close();
fout.close();
return 0;
}