Pagini recente » Cod sursa (job #2079735) | Cod sursa (job #879303) | Cod sursa (job #1459541) | Monitorul de evaluare | Cod sursa (job #3330569)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
#define NMAX 505
int mat[NMAX][NMAX];
int rmq[10][NMAX][NMAX];
int main()
{
int n, m;
fin >> n >> m;
cout << n << " " << m << '\n';
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
fin >> rmq[0][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++)
{
int l = (1 << (k - 1));
int a = rmq[k - 1][i][j];
int b = rmq[k - 1][i + l][j];
int c = rmq[k - 1][i][j + l];
int d = rmq[k - 1][i + l][j + l];
rmq[k][i][j] = max(max(a, b), max(c, d));
}
}
}
while (m--)
{
int x, i, j;
fin >> i >> j >> x;
int k = log2(x);
int l = (1 << k);
cout << i << " " << j << " " << i + x - l << " " << j + x - l << '\n';
int a = rmq[k][i][j];
int b = rmq[k][i + x - l][j];
int c = rmq[k][i][j + x - l];
int d = rmq[k][i + x - l][j + x - l];
fout << max(max(a, b), max(c, d)) << '\n';
}
return 0;
}