Pagini recente » Cod sursa (job #1808774) | Cod sursa (job #1238106) | Cod sursa (job #2273105) | Cod sursa (job #1254697) | Cod sursa (job #3135529)
#include <fstream>
#define MAX 500
#define LOG 10
using namespace std;
ifstream cin ("plantatie.in");
ofstream cout ("plantatie.out");
int rmq[LOG + 10][MAX + 10][MAX + 10], exp2[MAX + 10];
int main()
{
int n, q;
cin >> n >> q;
int val;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
cin >> rmq[0][i][j];
for (int p = 1; (1 << p) <= n; p++)
for (int i = 1; i <= n - (1 << p) + 1; i++)
for (int j = 1; j <= n - (1 << p) + 1; j++)
rmq[p][i][j] = max(max(rmq[p - 1][i][j],rmq[p - 1][i + (1 << (p - 1))][j]), max(rmq[p - 1][i][j + (1 << (p - 1))], rmq[p - 1][i + (1 << (p - 1))][j + (1 << (p - 1))]));
exp2[1] = 0;
for (int i = 2; i <= n; i++)
exp2[i] = exp2[i / 2] + 1;
for (int i = 1; i <= q; i++)
{
int l, c, length;
cin >> l >> c >> length;
int p = exp2[length];
cout << max(max(rmq[p][l][c], rmq[p][l + length - (1 << p)][c + length - (1 << p)]), max(rmq[p][l + length - (1 << p)][c], rmq[p][l][c + length - (1 << p)])) << '\n';
}
return 0;
}