Pagini recente » Cod sursa (job #224119) | Cod sursa (job #141959) | Cod sursa (job #2723406) | Cod sursa (job #1743998) | Cod sursa (job #3229803)
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
int n, m;
int r[17][505][505];
int E[100001];
int maxim(int a, int b, int c, int d)
{
return max(max(a, b), max(c, d));
}
void preCompute()
{
E[1] = 0;
for (int i = 2; i <= n; ++i)
E[i] = E[i / 2] + 1;
for (int p = 1, lat = 2; lat <= n; p++, lat *= 2)
{
for (int i1 = 1; i1 <= n - lat + 1; i1++)
{
for (int j1 = 1; j1 <= n - lat + 1; j1++)
{
int i2 = i1 + (lat >> 1);
int j2 = j1 + (lat >> 1);
r[p][i1][j1] = maxim(r[p-1][i1][j1], r[p-1][i2][j1], r[p-1][i1][j2], r[p-1][i2][j2]);
}
}
}
}
void read()
{
cin >> n >> m;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
cin >> r[0][i][j];
preCompute();
for (int i = 1; i <= m; ++i)
{
int I, J, L;
cin >> I >> J >> L;
int e = E[L];
int len = (1 << e);
cout << maxim(r[e][I][J], r[e][I + L - len][J], r[e][I][J + L - len], r[e][I + L - len][J + L - len]) << '\n';
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
freopen("plantatie.in", "r", stdin);
freopen("plantatie.out", "w", stdout);
read();
return 0;
}