Pagini recente » Cod sursa (job #1131778) | Cod sursa (job #1092860) | Cod sursa (job #1299509) | Cod sursa (job #2781721) | Cod sursa (job #2151627)
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <functional>
#include <bitset>
#include <set>
using namespace std;
int RMQ[10][505][505];
int main() {
ios::sync_with_stdio(false);
string filename = "plantatie";
ifstream fin(filename + ".in");
ofstream fout(filename + ".out");
int n, m;
fin >> n >> m;
vector<int> lg(n + 1);
for (int i = 2; i <= n; ++i)
lg[i] = lg[i / 2] + 1;
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
fin >> RMQ[0][i][j];
for (int k = 1; k <= lg[n]; ++k) {
for (int i = 0; i < n - (1 << k) + 1; ++i) {
for (int j = 0; j < n - (1 << k) + 1; ++j) {
int l = 1 << (k - 1);
RMQ[k][i][j] = max({ RMQ[k - 1][i][j], RMQ[k - 1][i + l][j], RMQ[k - 1][i][j + l], RMQ[k - 1][i + l][j + l] });
}
}
}
while (m--) {
int x, y, k;
fin >> x >> y >> k;
--x; --y;
int lvl = lg[k];
int rem = k - (1 << lvl);
fout << max({ RMQ[lvl][x][y], RMQ[lvl][x + rem][y], RMQ[lvl][x][y + rem], RMQ[lvl][x + rem][y + rem] }) << "\n";
}
//system("pause");
return 0;
}