Pagini recente » Cod sursa (job #1222854) | Cod sursa (job #615891) | Cod sursa (job #1363165) | Cod sursa (job #245043) | Cod sursa (job #2635746)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream f("plantatie.in");
ofstream o("plantatie.out");
int n, q;
int rmq[505][505][9];
int main()
{
f >> n >> q;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
{
f >> rmq[i][j][0];
}
for (int l = 1; l <= 8; l++)
for (int i = 1; i <= n - (1 << l) + 1; i++)
for (int j = 1; j <= n - (1 << l) + 1; j++)
rmq[i][j][l] = max(rmq[i][j][l - 1], max(rmq[i + (1 << (l - 1))][j][l - 1], max(rmq[i][j + (1 << (l - 1))][l - 1], rmq[i + (1 << (l - 1))][j + (1 << (l - 1))][l - 1])));
while (q--)
{
int i, j, l, logl;
f >> i >> j >> l;
logl = log2(l);
o << max(rmq[i][j][logl], max(rmq[i + l - (1 << logl)][j][logl], max(rmq[i][j + l - (1 << logl)][logl], rmq[i + l - (1 << logl)][j + l - (1 << logl)][logl]))) << '\n';
}
}