Pagini recente » Cod sursa (job #1336059) | Cod sursa (job #1362869) | Istoria paginii runda/wellcodesimulare2martieclasa10 | Cod sursa (job #488114) | Cod sursa (job #1520606)
#include <fstream>
using namespace std;
ifstream in ("plantatie.in");
ofstream out ("plantatie.out");
int n, m, lg[503], A[13][503][503];
inline int max (int x, int y) { if(x > y) return x; return y;}
int main()
{
in >> n >> m;
lg[0] = -1;
for (int i = 1; i <= n; ++i)
{
for (int j = 1; j <= n; ++j)
in >> A[0][i][j];
lg[i] = lg[i >> 1] + 1;
}
for (int k = 1; k <= lg[n]; ++k)
{
for (int i = 1; i + (1 << k) - 1 <= n; ++i)
{
for (int j = 1; j + (1 << k) - 1 <= n; ++j)
{
A[k][i][j] = max(max(A[k-1][i][j], A[k-1][i][j + (1 << (k-1))]), max(A[k-1][i + (1 << (k-1))][j], A[k-1][i + (1 << (k-1))][j + (1 << (k-1))]));
}
}
}
for (int x, y, k, i = 1; i <= m; ++i)
{
in >> x >> y >> k;
int h = lg[k];
int sol = max(max(A[h][x][y], A[h][x + k - (1 << h)][y]), max(A[h][x][y + k - (1 << h)], A[h][x + k - (1 << h)][y + k - (1 << h)]));
out << sol << '\n';
}
out.close();
return 0;
}