Pagini recente » Cod sursa (job #2830928) | Cod sursa (job #2648115) | Cod sursa (job #1180374) | Cod sursa (job #1715768) | Cod sursa (job #999614)
Cod sursa(job #999614)
#include<stdio.h>
int v[502][502],d[10][502][502],Log[502];
void calc_log(int n)
{
int e=0,l=1,i;
for(i=1;i<=n;++i)
{
if(i>=l*2)
{
l*=2;
++e;
}
Log[i]=e;
}
}
inline int max(int a,int b)
{
return a>=b?a:b;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
int n,m,i,j,M,l,k,sol;
scanf("%d%d",&n,&m);
calc_log(n);
M=Log[n];
///////////////
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)
{
scanf("%d",&v[i][j]);
d[0][i][j]=v[i][j];
}
}
for(l=1;l<=M;++l)
{
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)
{
if((i+(1<<l)-1<=n) && (j+(1<<l)-1<=n))
{
d[l][i][j]=max(d[l-1][i][j],d[l-1][i][j+(1<<(l-1))]);
d[l][i][j]=max(d[l][i][j],d[l-1][i+(1<<(l-1))][j]);
d[l][i][j]=max(d[l][i][j],d[l-1][i+(1<<(l-1))][j+(1<<(l-1))]);
}
}
}
}
//////////////////
while(m--)
{
scanf("%d%d%d",&i,&j,&l);
k=Log[l];
sol=max(d[k][i][j],d[k][i][j+l-(1<<k)]);
sol=max(sol,d[k][i+l-(1<<k)][j]);
sol=max(sol,d[k][i+l-(1<<k)][j+l-(1<<k)]);
printf("%d\n",sol);
}
return 0;
}