Pagini recente » Cod sursa (job #2672215) | Cod sursa (job #1718314) | Cod sursa (job #953062) | Cod sursa (job #1691845) | Cod sursa (job #1189844)
#include <fstream>
using namespace std;
ifstream is ("plantatie.in");
ofstream os ("plantatie.out");
int n, Q;
int RMQ[10][501][501], x, y, L;
int main()
{
is >> n >> Q;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
is >> RMQ[0][i][j];
for (int k = 1; 1<<k <= n; ++k)
for (int i = 1; i+(1<<(k-1))-1 <= n; ++i)
for (int j = 1; j+(1<<(k-1))-1 <= n; ++j)
RMQ[k][i][j] = max(max(RMQ[k-1][i][j], RMQ[k-1][i+(1<<(k-1))][j+(1<<(k-1))]),max(RMQ[k-1][i+(1<<(k-1))][j], RMQ[k-1][i][j+(1<<(k-1))]));
for (int q = 0, k = 0, Z; q < Q; ++q, k = 0)
{
is >> x >> y >> L;
for (Z = 1; Z <= L; Z <<= 1, ++k); Z >>= 1;
--k;
os << max(max(RMQ[k][x][y], RMQ[k][x][y+L-Z]), max(RMQ[k][x+L-Z][y], RMQ[k][x+L-Z][y+L-Z])) << '\n';
}
is.close();
os.close();
}