Pagini recente » Istoria paginii utilizator/nicolaee2 | Cod sursa (job #2222043) | Cod sursa (job #1431475) | Monitorul de evaluare | Cod sursa (job #1158869)
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;
ifstream fin ("plantatie.in");
ofstream fout ("plantatie.out");
const int N = 505;
int n, m, rmq[N][N][10], bp[N];
int main() {
fin >> n >> m;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
fin >> rmq[i][j][0];
for (int i = 2; i < N; ++i)
bp[i] = bp[i / 2] + 1;
for (int k = 1; (1 << k) <= n; ++k)
for (int i = 1; i <= n - (1 << k) + 1; ++i)
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]));
for (int x, y, len, i = 0; i < m; ++i) {
fin >> x >> y >> len;
int pw = bp[len], dif = len - (1 << pw);
fout << max(max (rmq[x][y][pw], rmq[x + dif][y][pw]), max(rmq[x][y + dif][pw], rmq[x + dif][y + dif][pw])) << "\n";
}
}