Pagini recente » Cod sursa (job #32272) | Cod sursa (job #821864) | Cod sursa (job #2753852) | Cod sursa (job #1883347) | Cod sursa (job #3175380)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int rmq[13][505][505], e[505], n;
int main()
{
int i, j, k, q, L;
fin >> n >> q;
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
fin >> rmq[0][i][j];
for (i = 2; i <= n; i++)
e[i] = 1 + e[i / 2];
for (k = 1; k <= e[n]; k++)
{
L = (1 << k);
for (i = 1; i <= n - L + 1; i++)
for (j = 1; j <= n - L + 1; j++)
rmq[k][i][j] = max({rmq[k - 1][i][j], rmq[k - 1][i + L / 2][j],
rmq[k - 1][i][j + L / 2], rmq[k - 1][i + L / 2][j + L / 2]});
}
while (q--)
{
fin >> i >> j >> k;
L = e[k];
fout << max({ rmq[L][i][j], rmq[L][i + k - (1 << L)][j + k - (1 << L)],
rmq[L][i + k - (1 << L)][j], rmq[L][i][j + k - (1 << L)]}) << "\n";
}
return 0;
}