Pagini recente » Cod sursa (job #313760) | Cod sursa (job #1516874) | Cod sursa (job #2843537) | Cod sursa (job #2198869) | Cod sursa (job #178949)
Cod sursa(job #178949)
#include<stdio.h>
int nr[10][512][512],log[512];
inline int max(int a,int b,int c,int d){
int x,y;
if(a>b)
x=a;
else
x=b;
if(c>d)
y=c;
else
y=d;
if(x>y)
return x;
return y;
}
int main(){
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
int n,m,i,j,x,y,k;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i){
for(j=1;j<=n;++j)
scanf("%d",&nr[0][i][j]);
}
for(i=2;i<=n;++i)
log[i]=log[i>>1]+1;
for(k=1;k<=log[n];++k){
for(i=1;i+(1<<k)<=n+1;++i){
for(j=1;j+(1<<k)<=n+1;++j)
nr[k][i][j]=max(nr[k-1][i][j],nr[k-1][i+(1<<(k-1))][j],nr[k-1][i][j+(1<<(k-1))],nr[k-1][i+(1<<(k-1))][j+(1<<(k-1))]);
}
}
for(i=0;i<m;++i){
scanf("%d%d%d",&x,&y,&k);
j=log[k];
printf("%d\n",max(nr[j][x][y],nr[j][x+k-(1<<j)][y],nr[j][x][y+k-(1<<j)],nr[j][x+k-(1<<j)][y+k-(1<<j)]));
}
fclose(stdin);
fclose(stdout);
return 0;
}