Pagini recente » Cod sursa (job #2455992) | Cod sursa (job #160397)
Cod sursa(job #160397)
#include <stdio.h>
#include <math.h>
long n, m, i2, j2, p, e, a[512][512][10], qi, qj, ql, qk, k, marime[512], y;
long max(long nr1, long nr2) {
if (nr1 > nr2) {
return nr1;
}
return nr2;
}
int main() {
freopen("plantatie.in", "r", stdin);
freopen("plantatie.out", "w", stdout);
scanf("%ld %ld\n", &n, &m);
for (i2 = 1; i2 <= n; ++i2) {
for (j2 = 1; j2 <= n; ++j2) {
scanf("%ld", &a[i2][j2][0]);
}
}
for (i2 = 2; i2 <= 500; ++i2) {
if (i2 == 1 << (e + 1)) {
++e;
}
marime[i2] = e;
}
for(k = 1, y = 1; y * 2 <= n; ++k, y *= 2) {
for (i2 = 1; i2 <= n; ++i2) {
for (j2 = 1; j2 <= n; ++j2) {
a[i2][j2][k] = max(max(max(a[i2][j2][k - 1], a[i2 + y][j2][k - 1]), a[i2 + y][j2 + y][k - 1]), a[i2][j2 + y][k - 1]);
}
}
}
for (i2 = 1; i2 <= m; ++i2) {
scanf("%ld %ld %ld\n", &qi, &qj, &ql);
long qk = marime[ql];
printf("%ld\n", max(max(max(a[qi][qj][qk], a[qi + ql - (1 << qk)][qj][qk]), a[qi][qj + ql - (1 << qk)][qk]), a[qi + ql - (1 << qk)][qj + ql - (1 << qk)][qk]));
}
return 0;
}