Pagini recente » Cod sursa (job #1275150) | Rating Popescu Ioana (PopescuIoana) | Cod sursa (job #795533) | Cod sursa (job #2137223) | Cod sursa (job #2011758)
#include <bits/stdc++.h>
#define K_MAX 10
#define N_MAX 505
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int N, M, RMQ[K_MAX][N_MAX][N_MAX];
vector<int>Log2;
int main()
{
fin >> N >> M;
Log2.resize(N + 1, 0);
for (int i = 2; i <= N; ++i)
Log2[i] = Log2[i >> 1] + 1;
for (int i = 1; i <= N; ++i)
for (int j = 1; j <= N; ++j)
fin >> RMQ[0][i][j];
for (int k = 1; (1 << k) <= N; ++k)
for (int i = 1; i <= N; ++i)
for (int j = 1; j <= N; ++j)
{
int l = (1 << (k - 1));
RMQ[k][i][j] = max( RMQ[k - 1][i][j],
max(RMQ[k - 1][i + l][j + l],
max(RMQ[k - 1][i][j + l], RMQ[k - 1][i + l][j])));
}
for(int i, j, k; M; --M)
{
fin >> i >> j >> k;
int l = Log2[k];
fout << max(RMQ[l][i][j],
max(RMQ[l][i + k - (1 << l) ][j + k - (1 <<l)],
max(RMQ[l][i + k - (1 << l)][j], RMQ[l][i][j + k - (1 << l)]))) << "\n";
}
return 0;
}