Pagini recente » Cod sursa (job #655832) | Cod sursa (job #2907131)
#include <iostream>
#include <fstream>
using namespace std;
int mat[501][501][10], lg[501];
int main() {
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int N, M, l;
f >> N >> M;
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
f >> mat[i][j][0];
lg[1] = 0;
for(int i = 2; i <= N; i++)
lg[i] = lg[i / 2] + 1;
for(int k = 1; (1 << k) <= N; k ++) {
l = (1 << k);
for(int i = 1; i <= N - l + 1; i ++)
for(int j = 1; j <= N - l + 1; j ++)
mat[i][j][k] = max(max (mat[i][j][k - 1], mat[i][j + l/2][k - 1]), max (mat[i + l/2][j][k - 1], mat[i + l/2][j + l/2][k - 1]));
}
while(M) {
int x, y, k;
f >> x >> y >> k;
int p = (1 << lg[k]);
g << max(mat[x][y][lg[k]], max(mat[x + k - p][y][lg[k]], max(mat[x][y + k - p][lg[k]], mat[x + k - p][y + k - p][lg[k]]))) << '\n';
M--;
}
f.close();
g.close();
return 0;
}