Pagini recente » Cod sursa (job #2806782) | Cod sursa (job #2250669) | Cod sursa (job #1727167) | Cod sursa (job #609999) | Cod sursa (job #1199958)
#include <fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
const int nmax = 501 , lognmax = 9;
int n , m , r[lognmax][nmax][nmax] , lg[nmax];
inline int max(int x, int y)
{
return x > y ? x : y;
}
int main()
{
int i , j , k , j1 , k1 , a , b , a1 , b1 , a2 , b2 , l , L;
in >> n >> m;
for(i = 1 ; i <= n ; i++)
for(j = 1 ; j <= n ; j++)
in >> r[0][i][j];
for(i = 1 ; i < lognmax ; i++)
for(j = 1 ; j <= n ; j++)
for(k = 1 ; k <= n ; k++)
{
if((1 << i) > j || (1 << i) > k)
continue;
j1 = j - (1 << (i - 1));
k1 = k - (1 << (i - 1));
r[i][j][k] = max(max(r[i - 1][j1][k1] , r[i - 1][j1][k]) , max(r[i - 1][j][k1] , r[i-1][j][k]));
}
for(i = 2 ; i <= n ; i++)
lg[i] = 1 + lg[i / 2];
for(i = 1 ; i <= m ; i++)
{
in >> a >> b >> l;
L = lg[l];
a1 = a + (1 << L) - 1;
b1 = b + (1 << L) - 1;
a2 = a + l - 1;
b2 = b + l - 1;
out << max(max(r[L][a1][b1] , r[L][a1][b2]) , max(r[L][a2][b1] , r[L][a2][b2])) << '\n';
}
return 0;
}