Pagini recente » Cod sursa (job #995560) | Cod sursa (job #2851103)
#include <fstream>
using namespace std;
const int NMAX = 504, LMAX = 9;
int r[LMAX][NMAX][NMAX], prec[NMAX];
int main()
{
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int n, q, i, j, k;
cin >> n >> q;
prec[0] = -1;
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
cin >> r[0][i][j];
for (i = 1; i <= n; i++)
prec[i] = prec[i - 1] + !(i & (i - 1));
for (k = 1; k <= prec[n]; k++)
{
int lat = (1 << k);
for (i = lat; i <= n; i++)
for (j = lat; j <= n; j++)
r[k][i][j] = max(max(r[k - 1][i][j], r[k - 1][i][j - lat]),
max(r[k - 1][i - lat][j - lat], r[k - 1][i - lat][j]));
}
while (q--)
{
int a, b, l;
cin >> a >> b >> l;
a += l - 1;
b += l - 1;
int l2 = (1 << prec[l]);
cout << max(max(r[prec[l]][a - l + l2][b - l + l2], r[prec[l]][a][b - l + l2]),
max(r[prec[l]][a][b], r[prec[l]][a - l + l2][b])
) << "\n";
}
return 0;
}