Pagini recente » Cod sursa (job #2565195) | Cod sursa (job #2269518) | Cod sursa (job #2368204) | Cod sursa (job #2325741) | Cod sursa (job #3280182)
#include <iostream>
#include <fstream>
#define nl '\n'
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
const int NMAX = 502, LGMAX = 9;
int n, m, rmq[LGMAX][NMAX][NMAX], lg[NMAX];
int query(int i, int j, int len)
{
int p = lg[len];
return max(max(rmq[p][i][j],
rmq[p][i][j+len-1-(1<<p)+1]),
max(rmq[p][i+len-1-(1<<p)+1][j],
rmq[p][i+len-1-(1<<p)+1][j+len-1-(1<<p)+1]));
}
int main()
{
fin >> n >> m;
lg[0] = -1;
for (int i = 1; i <= n; i++)
{
lg[i] = lg[i/2]+1;
for (int j = 1; j <= n; j++)
fin >> rmq[0][i][j];
}
for (int p = 1; p <= lg[n]; p++)
for (int i = 1; i + (1<<p) - 1 <= n; i++)
for (int j = 1; j + (1 << p) - 1 <= n; j++)
rmq[p][i][j] = max(max(rmq[p-1][i][j],
rmq[p-1][i][j+(1<<(p-1))]),
max(rmq[p-1][i+(1<<(p-1))][j],
rmq[p-1][i+(1<<(p-1))][j+(1<<(p-1))]));
while (m--)
{
int x, y, len;
fin >> x >> y >> len;
fout << query(x, y, len) << nl;
}
return 0;
}