Pagini recente » Cod sursa (job #1941009) | Cod sursa (job #2841218) | Cod sursa (job #1247054) | Cod sursa (job #618093) | Cod sursa (job #3249436)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
const int NMAX = 502, LOGMAX = 9;
int rmq[LOGMAX][NMAX][NMAX];
int log2[NMAX];
int main()
{
int n, m, i, j, k;
fin >> n >> m;
log2[1] = 0;
for(i = 2; i <= n; i++)
log2[i] = log2[i / 2] + 1;
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
fin >> rmq[0][i][j];
for(k = 1; k <= log2[n]; k++)
{
int lat = (1 << k);
for(i = 1; i <= n - lat + 1; i++)
{
for(j = 1; j <= n - lat + 1; j++)
{
int i2 = i + lat / 2, j2 = j + lat / 2;
rmq[k][i][j] = max(rmq[k - 1][i][j], max(rmq[k - 1][i2][j], max(rmq[k - 1][i][j2], rmq[k - 1][i2][j2])));
}
}
}
for(k = 1; k <= m; k++)
{
int lat;
fin >> i >> j >> lat;
int put = log2[lat], i2 = (i + lat - 1) - (1 << put) + 1, j2 = (j + lat - 1) - (1 << put) + 1;
fout << max(rmq[put][i][j], max(rmq[put][i2][j2], max(rmq[put][i][j2], rmq[put][i2][j]))) << '\n';
}
return 0;
}