Pagini recente » Cod sursa (job #1861892) | Cod sursa (job #1633185) | Cod sursa (job #2108478) | Cod sursa (job #1996850) | Cod sursa (job #3186498)
#include <iostream>
#include <vector>
#include <climits>
#include<unordered_map>
#include <algorithm>
#include <set>
#include<string>
#include<fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int t;
#define ll long long
int r[10][550][550];
int E[550];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N, M;
in >> N >> M;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
in >> r[0][i][j];
}
}
for (int p = 1; (1 << p) <= N; p++) {
for (int i1 = 1; i1 + (1 << p) - 1 <= N; i1++) {
for (int j1 = 1; j1 + (1 << p) - 1 <= N; j1++) {
int i2 = i1 + (1 << (p - 1));
int j2 = j1 + (1 << (p - 1));
r[p][i1][j1] = max(
max(r[p-1][i1][j1], r[p-1][i1][j2]),
max(r[p-1][i2][j1], r[p-1][i2][j2])
);
}
}
}
for (int i = 2; i < 550; i++) {
E[i] = 1 + E[i / 2];
}
while (M--) {
int qi, qj, len;
in >> qi >> qj >> len;
int p = E[len];
int i2, j2;
i2 = qi + len - (1 << p);
j2 = qj + len - (1 << p);
int ans = max(
max(r[p][qi][qj], r[p][qi][j2]),
max(r[p][i2][qj], r[p][i2][j2])
);
out << ans << "\n";
}
}