Pagini recente » Cod sursa (job #186675) | Cod sursa (job #1728300) | Cod sursa (job #2361571) | Cod sursa (job #2686466) | Cod sursa (job #1761065)
#include<fstream>
#include<algorithm>
using namespace std;
int RMQ[20][500][500],p[510],N,Q;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int main()
{
in >> N >> Q;
for (int i = 2;i <= 500;++i)
p[i] = p[i / 2] + 1;
for (int i = 1;i <= N;++i)
for (int j = 1;j <= N;++j)
in>>RMQ[0][i][j];
for (int i = 1;(1 << i) <= N;++i)
for (int j = 1;j + ((1 << i) - 1) <= N;++j)
for (int k = 1;k + ((1 << i) - 1) <= N;++k)
RMQ[i][j][k] = max(max(RMQ[i - 1][j][k], RMQ[i - 1][j][k + (1 << (i - 1))]), max(RMQ[i - 1][j + (1 << (i - 1))][k], RMQ[i - 1][j + (1 << (i - 1))][k + (1 << (i - 1))]));
for (int i = 1;i <= Q;++i)
{
int a, b, c;
in >> a >> b >> c;
out << max(max(RMQ[p[c]][a][b], RMQ[p[c]][a][b + c - (1 << p[c])]), max(RMQ[p[c]][a + c - (1 << p[c])][b], RMQ[p[c]][a + c - (1 << p[c])][b + c - (1 << p[c])])) << '\n';
}
return 0;
}