Pagini recente » Cod sursa (job #2838928) | Cod sursa (job #3130652) | Cod sursa (job #2778151) | Cod sursa (job #662880) | Cod sursa (job #20282)
Cod sursa(job #20282)
#include <cstdio>
#define FIN "plantatie.in"
#define FOUT "plantatie.out"
#define MAX 501
long N, M;
long v[MAX][MAX][10];
inline long max(long a1, long a2, long a3, long a4) {
long m = a1;
if ( m<a2 )
m = a2;
if ( m<a3 )
m = a3;
if ( m<a4 )
m = a4;
return m;
}
void precalc() {
long i,j,k, p;
for (k=1; (1<<k)<=N; ++k) {
p = (1<<(k-1));
for (i=1; i+(p<<1)-1<=N; ++i)
for (j=1; j+(p<<1)-1<=N; ++j)
v[i][j][k] = max(v[i][j][k-1], v[i+p][j][k-1], v[i][j+p][k-1], v[i+p][j+p][k-1]);
}
}
int main() {
freopen(FIN, "r", stdin); freopen(FOUT, "w", stdout);
scanf("%ld %ld", &N, &M);
for (long i=1; i<=N; ++i)
for (long j=1; j<=N; ++j)
scanf("%ld", v[i][j]);
precalc();
while (M--) {
long x,y,z, i, p;
scanf("%ld %ld %ld", &x, &y, &z);
for (i=0; (1<<(i+1)) <= z; ++i);
p = (1<<i);
printf("%ld\n", max(v[x][y][i], v[x+z-p][y][i], v[x][y+z-p][i], v[x+z-p][y+z-p][i]));
}
fclose(stdin); fclose(stdout);
return 0;
}