Pagini recente » Istoria paginii runda/moisil_9/clasament | Cod sursa (job #705519) | Cod sursa (job #2919535) | Cod sursa (job #1062231) | Cod sursa (job #2588265)
#include <bits/stdc++.h>
#define newline '\n'
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
///************************
const int NMAX = 505;
int n, m;
int a[NMAX][NMAX];
int rmq[NMAX][NMAX][21];
int log2from[NMAX + 10];
void init()
{
for (int i = 2; i <= n; i++)
log2from[i] = log2from[i >> 1] + 1;
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; k <= log2from[n]; k++)
{
int p = (1 << (k - 1));
for (int i = 1; i <= n - p; i++)
for (int j = 1; j <= n - p; j++)
{
rmq[i][j][k] = max({rmq[i][j][k - 1], rmq[i][j + p][k - 1], rmq[i + p][j][k - 1], rmq[i + p][j + p][k - 1] });
}
}
}
int main()
{
fin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
fin >> a[i][j];
init();
while (m--)
{
int i, j, k;
fin >> i >> j >> k;
int p = log2from[k];
fout << max({rmq[i][j][p],rmq[i][j+k-(1<<p)][p],rmq[i+k-(1<<p)][j][p],rmq[i+k-(1<<p)][j+k-(1<<p)][p]}) << newline;
}//*/
fout.close();
return 0;
}