Pagini recente » Cod sursa (job #2678229) | Cod sursa (job #998134) | Cod sursa (job #882870) | Cod sursa (job #2369417) | Cod sursa (job #534108)
Cod sursa(job #534108)
#include<stdio.h>
int v[510][510][10],i,j,k,l,m,n;
int max(int a,int b,int c,int d){
if(b>a)a=b;
if(d>c)c=d;
if(a>c)return a;
return c;
}
int po(int k){
return 1<<k;
}
void solve(){
int i,j,k;
for(k = 1; po(k) <= n ; k++)
for(i = 1 ; i <= n-po(k) +1; i++)
for(j = 1 ; j <= n - po(k)+1; j++)
v[i][j][k] = max(v[i][j][k-1],v[i+po(k-1)][j][k-1],v[i][j+po(k-1)][k-1],v[i+po(k-1)][j+po(k-1)][k-1]);
}
void citire(){
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
int x,y,l,k,sol;
scanf("%d %d",&n,&m);
for(i = 1 ; i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&v[i][j][0]);
solve();
for(i = 1; i<=m;i++)
{scanf("%d %d %d",&x,&y,&l);
k=1;
while(po(k)<=l)k++;
k--;
sol = max(v[x][y][k],v[x][y+l-po(k)][k],v[x+l-po(k)][y][k],v[x+l-po(k)][y+l-po(k)][k]);
printf("%d\n",sol);
}
}
int main(){
citire();
return 0;}