Pagini recente » Cod sursa (job #338131) | Cod sursa (job #476882) | Cod sursa (job #723874) | Cod sursa (job #1151933) | Cod sursa (job #3159804)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n,q;
int r[10][505][505];
int e[505];
int mx(int a,int b,int c,int d)
{
return max(max(a,b),max(c,d));
}
void prec()
{
for(int i=2 ; i<=n;i++)
e[i]=e[i/2]+1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
fin>>r[0][i][j];
for(int p=1;(1<<p) <= n; p++)
for(int i=1;i<=n - (1<<p)+1;i++)
for(int j=1;j<=n - (1<<p)+1;j++)
{
int i2 = i + (1<<(p-1));
int j2 = j + (1<<(p-1));
r[p][i][j] = mx(
r[p-1][i][j],
r[p-1][i2][j],
r[p-1][i][j2],
r[p-1][i2][j2]
);
}
}
int main()
{
fin>>n>>q;
prec();
for(int i=1;i<=q;i++)
{
int x,y,l;
fin>>x>>y>>l;
int lg = e[l];
int x2 = x + l - (1<<lg);
int y2 = y + l - (1<<lg);
int sol = mx(r[lg][x][y],r[lg][x2][y],r[lg][x][y2],r[lg][x2][y2]);
fout<<sol<<'\n';
}
}