Pagini recente » Cod sursa (job #656175) | Cod sursa (job #2321573) | Cod sursa (job #1071436) | Cod sursa (job #1804708) | Cod sursa (job #591710)
Cod sursa(job #591710)
# include <fstream>
# define NM (1 << (k - 1))
using namespace std;
ifstream f ("plantatie.in");
ofstream g ("plantatie.out");
int n, m, i, j, k, a[510][510][10], vlg[510];
template <class T>
inline T maxim (T a, T b, T c, T d){
int mx = a;
if (mx < b) mx = b;
if (mx < c) mx = c;
if (mx < d) mx = d;
return mx;
}
int main (){
f >> n >> m;
for (i = 2; i <= 505; ++i) vlg[i] = vlg[i >> 1] + 1;
for (i = 1; i <= n; ++i)
for (j = 1; j <= n; ++j)
f >> a[i][j][0];
for (k = 1; k <= vlg[n]; ++k)
for (i = 1; i <= n - (1 << k) + 1; ++i)
for (j = 1; j <= n - (1 << k) + 1; ++j)
a[i][j][k] = maxim (a[i][j][k - 1], a[i][j + NM][k - 1], a[i + NM][j][k - 1], a[i + NM][j + NM][k - 1]);
for (; m > 0; --m){
f >> i >> j >> k;
int p = vlg[k];
g << maxim (a[i][j][p], a[i][j + k - (1 << p)][p], a[i + k - (1 << p)][j][p], a[i + k - (1 << p)][j + k - (1 << p)][p]) << '\n';
}
g.close ();
return 0;
}