Pagini recente » Cod sursa (job #2180236) | Cod sursa (job #153273) | Cod sursa (job #195632) | Cod sursa (job #2647661) | Cod sursa (job #2166698)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, m, a[500][500][11];
int put[64];
void pre()
{
int k = 0, i;
for (i = 1; i <= n; i <<= 1)
{
put[k++] = i;
for (int j1 = 0; j1 + i - 1 < n; j1++)
for (int j2 = 0; j2 + i - 1 < n; j2++)
{
int mx = a[j1][j2][k - 1];
mx = max(mx, a[j1 + i][j2][k - 1]);
mx = max(mx, a[j1][j2 + i][k - 1]);
mx = max(mx, a[j1 + i][j2 + i][k - 1]);
a[j1][j2][k] = mx;
}
}
put[k] = i;
}
int query(int x, int y, int l)
{
int k = 0, mx = 0, p;
while (put[k + 1] <= l) k++;
p = put[k];
mx = a[x][y][k];
mx = max(mx, a[x][y + l - p][k]);
mx = max(mx, a[x + l - p][y][k]);
mx = max(mx, a[x + + l - p][y + l - p][k]);
return mx;
}
int main()
{
int x, y, l;
fin >> n >> m;
for (int i = 0; i < n; i++)
for (int j = 0 ; j < n; j++)
fin >> a[i][j][0];
pre();
while (m--)
{
fin >> x >> y >> l;
fout << query(x - 1, y - 1, l) << '\n';
}
}