Pagini recente » Cod sursa (job #2255683) | Cod sursa (job #2457370) | Cod sursa (job #3156572) | Cod sursa (job #1907805) | Cod sursa (job #324048)
Cod sursa(job #324048)
#include<stdio.h>
#define NM 256+513
int b[10][NM][NM];
int a[NM][NM];
int main(){
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
int n,m,i,j,k,l,c,lat,pmax,p,x,t;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
for(j=1;j<=n;++j){
scanf("%d",&a[i][j]);
b[0][i][j]=a[i][j];
}
k=0;p=1;
while(p<n) k++,p*=2;
x=k;p=1;
for(k=1;k<=x;++k){
for(i=1;i<=n;++i)
for(j=1;j<=n;++j){
pmax=b[k-1][i][j];
if(pmax<b[k-1][i+p][j+p]) pmax=b[k-1][i+p][j+p];
if(pmax<b[k-1][i+p][j]) pmax=b[k-1][i+p][j];
if(pmax<b[k-1][i][j+p]) pmax=b[k-1][i][j+p];
b[k][i][j]=pmax;
}
p*=2;
}
for(t=0;t<m;++t){
scanf("%d%d%d",&l,&c,&lat);
p=1;k=0;
while(p<lat) k++,p*=2;
if(p>lat) p/=2,k--;
pmax=b[k][l][c];
if(pmax<b[k][l][c+lat-p]) pmax=b[k][l][c+lat-p];
if(pmax<b[k][l+lat-p][c]) pmax=b[k][l+lat-p][c];
if(pmax<b[k][l+lat-p][c+lat-p]) pmax=b[k][l+lat-p][c+lat-p];
printf("%d\n",pmax);
}
return 0;
}