Pagini recente » Cod sursa (job #1327070) | Cod sursa (job #819149) | Cod sursa (job #3160009) | Cod sursa (job #987681) | Cod sursa (job #58702)
Cod sursa(job #58702)
#include <stdio.h>
#define fin "plantatie.in"
#define fout "plantatie.out"
#define Nmax 501
int N,M,v[Nmax][Nmax][10];
int minf(int a,int b) { (a<b)?(a):(a=b); return a; }
int maxf(int a,int b) { (a>b)?(a):(a=b); return a; }
int main() {
int i,j,k,val,p;
freopen(fin,"r",stdin); freopen(fout,"w",stdout);
scanf("%d%d",&N,&M);
for (i=1;i<=N;++i)
for (j=1;j<=N;++j) {
scanf("%d",&val);
v[i][j][0]=val;
for (k=1;(1<<k)<=minf(i,j);++k) {
val=maxf(v[i][j][k-1],val);
val=maxf(v[i][j-(1<<(k-1))][k-1],val);
val=maxf(v[i-(1<<(k-1))][j][k-1],val);
val=maxf(v[i-(1<<(k-1))][j-(1<<(k-1))][k-1],val);
v[i][j][k]=val;
}
}
for (;M>0;--M) {
scanf("%d%d%d",&i,&j,&k);
i+=k-1; j+=k-1;
for (p=0;(1<<p)<=k;++p);
--p;
val=v[i][j][p];
val=maxf(val,v[i][j-k+(1<<p)][p]);
val=maxf(val,v[i-k+(1<<p)][j][p]);
val=maxf(val,v[i-k+(1<<p)][j-k+(1<<p)][p]);
printf("%d\n",val);
}
return 0;
}