Pagini recente » Cod sursa (job #1309186) | Cod sursa (job #2434035) | Cod sursa (job #510961) | Cod sursa (job #2367628) | Cod sursa (job #1322098)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in ("plantatie.in");
ofstream out ("plantatie.out");
const int kNMax = 550, kLgMax = 14;
int n, Q, dp[kNMax][kNMax][kLgMax], lg[kNMax];
int main() {
int i, j, k, q;
in >> n >> Q;
for (i = 1; i <= n; ++i)
for (j = 1; j <= n; ++j)
in >> dp[i][j][0];
for (i = 2; i <= n; ++i)
lg[i] = lg[i / 2] + 1;
for (k = 1; k <= lg[n]; ++k){
q = 1 << (k-1);
for (i = 1; i <= n; ++i)
for (j = 1; j <= n; ++j)
dp[i][j][k] = max (dp[i][j][k - 1], max (dp[i + q][j][k - 1], max (dp[i][j + q][k - 1], dp[i + q][j + q][k - 1])));
}
int x, y, l, llog;
for (i = 1; i <= Q; ++i) {
in >> x >> y >> l;
llog = lg[l];
q = (1 << llog);
out << max (dp[x][y][llog], max (dp[x + l - q][y][llog], max (dp[x][y + l - q][llog], dp[x + l - q][y + l - q][llog]))) << '\n';
}
in.close();
out.close();
return 0;
}