Pagini recente » Cod sursa (job #1818891) | Cod sursa (job #2936637) | Cod sursa (job #671040) | Cod sursa (job #931056) | Cod sursa (job #3213818)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
const int N_MAX = 505, LOG = 10;
int n, q;
int E[N_MAX];
int m[LOG][N_MAX][N_MAX];
int main()
{
f >> n >> q;
E[1] = 0;
for(int i = 2; i <= n; ++i)
E[i] = 1 + E[i/2];
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)
f >> m[0][i][j];
for(int p = 1, len = 2; len <= n; ++p, len <<= 1)
for(int i1 = 1, i2; i1 <= n - len + 1; ++i1)
for(int j1 = 1, j2; j1 <= n - len + 1; ++j1){
i2 = i1 + (len >> 1);
j2 = j1 + (len >> 1);
m[p][i1][j1] = max({m[p-1][i1][j1],
m[p-1][i2][j1],
m[p-1][i1][j2],
m[p-1][i2][j2]
});
}
int i1, j1, i2, j2, L, len, e;
while(q--){
f >> i1 >> j1 >> L;
e = E[L];
len = (1 << e);
i2 = i1 + L - len;
j2 = j1 + L - len;
g << max({m[e][i1][j1],
m[e][i2][j1],
m[e][i1][j2],
m[e][i2][j2]
}) << '\n';
}
return 0;
}