Pagini recente » Cod sursa (job #1722512) | Cod sursa (job #2279443) | Cod sursa (job #1291580) | Cod sursa (job #2946864) | Cod sursa (job #2911979)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, m;
int mat[505][505], rmq[505][505][20], power[505];
void read()
{
fin >> n >> m;
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= n; j ++)
fin >> mat[i][j];
power[1] = 0;
for(int i = 2; i <= n; i ++)
power[i] = 1 + power[i / 2];
}
void RMQ()
{
for(int i = 1; i <= n ; i ++)
for(int j = 1; j <= n; j ++)
rmq[i][j][0] = mat[i][j]; //maximul pe secv de 1/1
for(int k = 1; k <= n; k ++)
for(int i = 1; i <= n - (1 << (k - 1)); i ++) //ultima secv este de la n - puterea lui 2 < n
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]));
}
void solve()
{
int i, j, k, ans;
for(int p = 1; p <= m; p ++)
{
fin >> i >> j >> k;
int put = power[k];
ans = max( max(rmq[i][j][put], rmq[i][j + k - (1 << put)][put]), max(rmq[i + k - (1 << put)][j][put], rmq[i + k - (1 << put)][j + k - (1 << put)][put]));
fout << ans << '\n';
}
}
int main()
{
read();
RMQ();
solve();
return 0;
}