Pagini recente » Cod sursa (job #138501) | Cod sursa (job #957955) | Cod sursa (job #1495542) | Cod sursa (job #1219027) | Cod sursa (job #2902009)
#include <iostream>
#include <fstream>
#define N 505
#define L 9
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int rmq[L][N][N];
int log_d[N];
int maxim4(int a, int b, int c, int d)
{
return max(max(a, b), max(c, d));
}
int main()
{
int n, m, x, i, j, k, l, log, lat;
fin >> n >> m;
log_d[1] = 0;
for(i = 2; i <= n; i++)
log_d[i] = 1 + log_d[i / 2];
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
{
fin >> x;
rmq[0][i][j] = x;
}
for(log = 1; (1 << log) <= n; log++)
for(i = (1 << log); i <= n; i++)
for(j = (1 << log); j <= n; j++)
{
int lat = (1 << (log - 1));
rmq[log][i][j] = maxim4(rmq[log - 1][i - lat][j - lat], rmq[log - 1][i - lat][j],
rmq[log - 1][i][j - lat], rmq[log - 1][i][j]);
}
for(k = 1; k <= m; k++)
{
fin >> i >> j >> lat;
//mutam (i,j) in coltul dreapta jos
i += lat - 1;
j += lat - 1;
int e = log_d[lat];
lat -= (1 << e);
fout << maxim4(rmq[e][i - lat][j - lat], rmq[e][i - lat][j], rmq[e][i][j - lat], rmq[e][i][j]) << "\n";
}
return 0;
}