Pagini recente » Cod sursa (job #1533523) | Cod sursa (job #3212613) | Cod sursa (job #392131) | Cod sursa (job #1012417) | Cod sursa (job #1900710)
#include <bits/stdc++.h>
using namespace std;
const int LOGMAX = int(log2(500.0)) , NMAX = 500 + 5;
int n,Q,rmq[LOGMAX + 5][NMAX][NMAX];
int main()
{
freopen("plantatie.in", "r" ,stdin);
freopen("plantatie.out", "w" ,stdout);
int n , Q;
scanf("%d %d\n", &n, &Q);
for (int i = 1; i<=n; ++i)
for (int j = 1; j<=n; ++j)
scanf("%d", &rmq[0][i][j]);
int logg = int(log2(1.0*n));
for (int k = 1; k<=logg; ++k)
for (int i = 1; i<= n - (1 << (k - 1)); ++i)
for (int j = 1; j<=n - (1 << (k - 1)); ++j)
rmq[k][i][j] = max(max(rmq[k - 1][i][j] , rmq[k-1][i + (1<<(k-1))][j]) , max(rmq[k-1][i][j + (1 << (k-1))] , rmq[k-1][i + (1<<(k-1))][j + (1 << (k-1))]));
for ( ; Q; --Q)
{
int li,ci,lf,cf , lat;
scanf("%d %d %d\n", &li, &ci, &lat);
lf = li + lat - 1 , cf = ci + lat - 1;
logg = int(log2(1.0*lat));
int ans = max(max(rmq[logg][li][ci] , rmq[logg][lf - (1 << logg) + 1][ci]) , max(rmq[logg][li][cf - (1 << logg) + 1], rmq[logg][lf - (1 << logg) + 1][cf - (1 << logg) + 1]));
printf("%d\n", ans);
}
return 0;
}