Pagini recente » Cod sursa (job #624022) | Cod sursa (job #1105605) | Cod sursa (job #1436343) | Cod sursa (job #1891907) | Cod sursa (job #1927498)
#include<fstream>
#include<cmath>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int maxim(int a,int b)
{
if(a>b)
return a;
return b;
}
const int NMAX=505,LOGNMAX=15;
int plant[NMAX][NMAX][LOGNMAX],q,i,j,k,n,a,b,c,d,x,y,r;
int main()
{
fin>>n>>q;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
fin>>plant[i][j][0];
for(k=1;(1<<k)<=n;++k)
for(i=1;i<=n-(1<<k)+1;++i)
for(j=1;j<=n-(1<<k)+1;++j)
{
a=plant[i][j][k-1];
b=plant[i][j+(1<<(k-1))][k-1];
c=plant[i+(1<<(k-1))][j][k-1];
d=plant[i+(1<<(k-1))][j+(1<<(k-1))][k-1];
plant[i][j][k]=maxim(a,maxim(b,maxim(c,d)));
}
while(q--)
{
fin>>x>>y>>r;
k=log2(r);
a=plant[x][y][k];
b=plant[x][y+r-(1<<k)][k];
c=plant[x+r-(1<<k)][y][k];
d=plant[x+r-(1<<k)][y+r-(1<<k)][k];
fout<<maxim(a,maxim(b,maxim(c,d)))<<'\n';
}
}