Pagini recente » Cod sursa (job #1395827) | Cod sursa (job #2032108) | Cod sursa (job #384100) | Cod sursa (job #937364) | Cod sursa (job #2961597)
#include "fstream"
using namespace std;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int n, m, rmq[502][502][9], a[502][502] ;
void preprocess()
{
for (int i = 1 ; i <= n ; i ++)
for (int j = 1 ; j <= n ; j ++)
rmq[i][j][0] = a[i][j] ;
for(int k = 1; (1 << k) <= n; k ++)
for(int i = 1 ; i + (1<<k) - 1 <= n ; i ++)
for(int j = 1; j + (1 << k) - 1 <= n ; j ++)
rmq[i][j][k] = max(rmq[i][j][k - 1],max(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]))) ;
}
int Query(int i,int j,int len)
{
int k = __lg(len);
return max(rmq[i][j][k],max(rmq[i + len - (1<<k)][j][k],max(rmq[i][j + len - (1<<k)][k],rmq[i + len - (1<<k)][j + len - (1<<k)][k])));
}
int main()
{
int x, y, len ;
cin >> n >> m ;
for (int i = 1 ; i <= n ; i ++)
for (int j = 1 ; j <= n ; j ++)
cin >> a[i][j] ;
preprocess() ;
for (int i = 0; i < m; ++i) {
cin >> x >> y >> len ;
cout << Query (x, y, len) << '\n' ;
}
return 0 ;
}