Pagini recente » Cod sursa (job #728710) | Cod sursa (job #1107886) | Cod sursa (job #1412250) | Cod sursa (job #1412002) | Cod sursa (job #1868905)
#include <cstdio>
#include <algorithm>
using namespace std;
int n, m, rmq[502][502][15], lg[502];
int main()
{
freopen("plantatie.in", "r", stdin);
freopen("plantatie.out", "w", stdout);
scanf("%d%d", &n, &m);
for(int i = 1; i <= n ; ++i)
for(int j = 1; j <= n ; ++j)
scanf("%d", &rmq[i][j][0]);
for(int k = 1; (1 << k) <= n ; ++k)
for(int i = 1; i <= n - (1 << k) + 1 ; ++i)
for(int j = 1; j <= n - (1 << k) + 1 ; ++j)
rmq[i][j][k] = max(max(rmq[i][j][k - 1], rmq[i + (1 << (k - 1))][j][k - 1]), max(rmq[i][j + (1 << (k - 1))][k - 1], rmq[i + (1 << (k - 1))][j + (1 << (k - 1))][k - 1]));
for(int i = 2; i <= n ; ++i)
lg[i] = lg[i / 2] + 1;
for(int i = 1; i <= m ; ++i){
int l, c, lat;
scanf("%d%d%d", &l, &c, &lat);
int p = (1 << lg[lat]), k = lg[lat];
printf("%d\n", max(max(rmq[l][c][k], rmq[l - p + lat][c][k]), max(rmq[l][c - p + lat][k], rmq[l - p + lat][c - p + lat][k])));
}
return 0;
}