Pagini recente » Cod sursa (job #835629) | Cod sursa (job #895715) | Cod sursa (job #284401) | Cod sursa (job #2286249) | Cod sursa (job #2849857)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int rmq[9][501][501], lg[501];
int max4(int a, int b, int c, int d)
{
return max(max(a, b), max(c, d));
}
int main()
{
int n, m;
f >> n >> m;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
f >> rmq[0][i][j];
}
}
for (int e = 1; (1 << e) <= n; e++)
for (int i = (1 << e); i <= n; i++)
for (int j = (1 << e); j <= n; j++)
{
int lat = (1 << (e - 1));
rmq[e][i][j] = max4(rmq[e - 1][i - lat][j - lat], rmq[e - 1][i - lat][j],
rmq[e - 1][i][j - lat], rmq[e - 1][i][j]);
}
for (int i = 2; i <= n; i++)
lg[i] = 1 + lg[i/2];
int l, c, lat, p, e;
for (int i = 1; i <= m; i++)
{
f >> l >> c >> lat;
e = lg[lat];
p = (1 << (e - 1));
l += lat - 1;
c += lat - 1;
lat -= p;
g << max4(rmq[e][l - lat][c - lat], rmq[e][l - lat][c], rmq[e][l][c - lat], rmq[e][l][c]) << '\n';
}
f.close();
g.close();
return 0;
}