Pagini recente » Cod sursa (job #399093) | Cod sursa (job #1667094) | Cod sursa (job #615503) | Cod sursa (job #1769410) | Cod sursa (job #2635736)
//#include "pch.h"
#include <iostream>
#include <fstream>
#include <climits>
#include <algorithm>
#include <cmath>
#include <vector>
#include <queue>
using namespace std;
ifstream f("plantatie.in");
ofstream o("plantatie.out");
int n, m;
int v[50][502][502];
int x, y, len;
int lg[505];
int k;
void rmq()
{
for (size_t i = 2; i <= 500; i++)
{
lg[i] = lg[i / 2] + 1;
}
for (size_t i = 1; i <= n; i++)
{
for (size_t j = 1; j <= n; j++)
{
f >> k;
v[0][i][j] = k;
}
}
for (size_t k = 1; (1 << k) <= n; k++)
{
for (size_t i = 1; i + (1 << k) <= n + 1; i++)
{
for (size_t j = 1; j + (1 << j) <= n + 1; j++)
{
v[k][i][j] = max(v[k - 1][i][j], max(v[k - 1][i][j + (1 << (k - 1))], max(v[k - 1][i + (1 << (k - 1))][j], v[k - 1][i + (1 << (k - 1))][j + (1 << (k - 1))])));
}
}
}
}
int main()
{
f >> n >> m;
rmq();
while (m--)
{
f >> x >> y >> len;
int log2 = lg[len];
o << max(v[log2][x][y], max(v[log2][x - (1 << log2) + len][y], max(v[log2][x][y - (1 << log2) + len], v[log2][x - (1 << log2) + len][y - (1 << log2) + len]))) << "\n";
}
}