Pagini recente » Cod sursa (job #1119864) | Cod sursa (job #956574) | Cod sursa (job #837724) | Cod sursa (job #1105045) | Cod sursa (job #2635744)
//#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][507][507];
int x, y, len;
int lg[505];
int k;
void rmq()
{
for (size_t i = 2; i <= 505; 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 cv = lg[len];
o << max(v[cv][x][y], max(v[cv][x - (1 << cv) + len][y], max(v[cv][x][y - (1 << cv) + len], v[cv][x - (1 << cv) + len][y - (1 << cv) + len]))) << "\n";
}
}