Pagini recente » Cod sursa (job #564743) | Cod sursa (job #744853) | Cod sursa (job #251034) | Cod sursa (job #3151591) | Cod sursa (job #3159931)
#include <fstream>
#include <climits>
#include <bitset>
using namespace std;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int n, m, r[11][502][502], e[502], exp, x, y, k,len;
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
cin >> r[0][i][j];
e[1] = 0;
for(int i=2; i<=n; i++)
e[i]=1+e[i/2];
for (int p = 1; (1 << p) <= n; p++)
for (int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
{
r[p][i][j] = r[p - 1][i][j];
int i1 = i + (1 << (p - 1));
int j1 = j + (1 << (p - 1));
if (i1 <= n && j1 <= n)
r[p][i][j] = max(r[p][i][j], max(r[p - 1][i][j1], max(r[p - 1][i1][j],r[p-1][i1][j1])));
}
for (int i = 1; i <= m; i++)
{
cin >> x >> y >> k;
exp = e[k];
len = (1 << exp);
int i1 = x + k - len;
int j1 = y + k - len;
cout << max(r[exp][x][y], max(r[exp][i1][y], max(r[exp][i1][j1], r[exp][x][j1]))) << '\n';
}
return 0;
}