Pagini recente » Cod sursa (job #3229127) | Cod sursa (job #2135710) | Cod sursa (job #377655) | Cod sursa (job #2769191) | Cod sursa (job #483105)
Cod sursa(job #483105)
#include<stdio.h>
#define maxim(a,b) (a>b ? a : b)
int n,m,sol;
int d[504][504][13];
int main ()
{
int i,j,t,p,px,py,l,ord;
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&d[i][j][0]);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(t=1;(1<<t)<=i && (1<<t)<=j;t++)
{
p=(1<<(t-1));
d[i][j][t]=maxim(d[i][j][t-1],d[i-p][j-p][t-1]);
d[i][j][t]=maxim(d[i][j][t],d[i-p][j][t-1]);
d[i][j][t]=maxim(d[i][j][t],d[i][j-p][t-1]);
}
// am construit rmq-ul 2D
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&px,&py,&l);
sol=0;p=1;ord=0;
while(p<=l)
{
p*=2;
ord++;
}
p/=2;ord--;
sol=maxim(d[px+p-1][py+p-1][ord],d[px+p-1][py+l-1][ord]);
sol=maxim(sol,d[px+l-1][py+p-1][ord]);
sol=maxim(sol,d[px+l-1][py+l-1][ord]);
printf("%d\n",sol);
}
return 0;
}