Pagini recente » Cod sursa (job #34179) | Cod sursa (job #832588) | Cod sursa (job #3200615)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, q, i, j, k, lg[502];
int a[10][502][502], x, y, l;
static inline int Query(int x, int y, int l) {
int k = lg[l];
int xx = x + l - (1 << k);
int yy = y + l - (1 << k);
return min(min(a[k][x ][y], a[k][x ][yy]),
min(a[k][xx][y], a[k][xx][yy]));
}
int main() {
fin >> n >> q;
for(i = 2; i <= n; i++) lg[i] = lg[i / 2] + 1;
for(i = 1; i <= n; i++) {
for(j = 1; j <= n; j++) fin >> a[0][i][j];
}
for(k = 1; (1 << k) <= n; k++) {
for(i = 1; i <= n; i++) {
for(j = 1; j <= n; j++) {
int ii = i + (1 << (k - 1));
int jj = j + (1 << (k - 1));
a[k][i][j] = a[k - 1][i][j];
if(ii <= n && jj <= n) {
a[k][i][j] = max(a[k][i][j], a[k - 1][i ][jj]);
a[k][i][j] = max(a[k][i][j], a[k - 1][ii][j ]);
a[k][i][j] = max(a[k][i][j], a[k - 1][ii][jj]);
}
/*a[k][i][j] = min(min(a[k - 1][i ][j ],
a[k - 1][i ][jj]),
min(a[k - 1][ii][j ],
a[k - 1][ii][jj]));*/
}
}
}
while(q--) {
fin >> x >> y >> l;
fout << Query(x, y, l) << "\n";
}
return 0;
}