Pagini recente » Cod sursa (job #349024) | Cod sursa (job #3230226)
#include <iostream>
#include <algorithm>
#include <fstream>
std::ifstream f("plantatie.in");
std::ofstream g("plantatie.out");
int N,M, r[17][502][502], E[502];
int main() {
f >> N >> M;
for (int i = 1; i <= N; ++i)
for (int j = 1; j <= N; ++j)
f >> r[0][i][j];
for (int p = 1, lat = 2; lat <= N; ++p, lat*=2){
for (int i = 1; i <= N-lat+1; ++i){
for (int j = 1; j <= N-lat+1; ++j){
int x = i + (lat>>1), y = j + (lat>>1);
r[p][i][j] = std::max(
std::max(r[p-1][i][j], r[p-1][i][y]),
std::max(r[p-1][x][j], r[p-1][x][y])
);
}
}
}
E[1] = 0;
for (int i = 2; i <= N; ++i)
E[i] = 1 + E[i/2];
for(int t = 0; t < M; ++t){
int x,y,lat;
f >> x >> y >> lat;
int p = E[lat];
int len = (1<<p);
g << std::max(
std::max(r[p][x][y], r[p][x][y + lat - len]),
std::max(r[p][x + lat - len][y], r[p][x + lat - len][y + lat - len])
);
g << "\n";
}
return 0;
}