Pagini recente » Cod sursa (job #487583) | Cod sursa (job #157319) | Cod sursa (job #162630) | Cod sursa (job #1058978) | Cod sursa (job #1952041)
#include <fstream>
#include <cstdio>
using namespace std;
ofstream cout("plantatie.out");
int M[505][505][10],i,j,n,m,nr,x,y,k,r;
int a,b,c,d;
int lg[505];
int main()
{
FILE*fin=freopen("plantatie.in","r",stdin);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&M[0][i][j]);
lg[1]=0;
for(i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
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=M[k-1][i][j];
b=M[k-1][i][j+(1<<(k-1))];
c=M[k-1][i+(1<<(k-1))][j];
d=M[k-1][i+(1<<(k-1))][j+(1<<(k-1))];
M[k][i][j]=max(a,max(b,max(c,d)));
}
for(i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&r);
k=lg[r];
a=M[k][x][y];
b=M[k][x][y+r-(1<<k)];
c=M[k][x+r-(1<<k)][y];
d=M[k][x+r-(1<<k)][y+r-(1<<k)];
cout<<max(a,max(b,max(c,d)))<<'\n';
}
return 0;
}