Pagini recente » Cod sursa (job #1112065) | Cod sursa (job #1754176) | Cod sursa (job #1057599) | Cod sursa (job #3190832) | Cod sursa (job #1923530)
#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;
lg[0] = 0;
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 / 2];
}
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';
}
}